2013-11-08 3 views
0

Я пытаюсь сделать функцию нажатой кнопкой. При щелчке функция проходит через каждый элемент input type = text, присваивает свой атрибут value переменной, если этот метод = null или variable = "" метод вызова подтверждают («вы уверены, что хотите сохранить пустую строку»). Вот мой код/​​псевдокод:на кнопку кликнуть, перебирать текстовые поля javascript

<script type="text/javascript"> 
    function isInputEmpty() { 
     $("#btnSave").click(function(){ 
      $('input[type=text]').each(function(){ 
       var x = $(this).attr('value'); 
       var bool = false; 
       if(x == null || x == "") 
       { 
        bool = true; 
       } 
       else 
       { 
        send the request 
       } 
       if(bool == true) 
       { 
        if(confirm('Are you sure you want to save a blank URL?')) 
        { 
         send the request 
        } 
        else 
        { 
         do nothing or cancel the request 
        } 
       } 
       else 
       { 
        send the request 
       } 
      } 
     } 
</script> 

Вот мой жерех код кнопки:

<asp:Button ID="btnSave" runat="server" Text="Save"/>

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Заранее благодарен

ответ

1

Для ID вопроса, если вы используете ASP.Net 4.0 +, установите ClientIDMode=Static

<asp:Button ID="btnSave" runat="server" ClientIDMode="Static" Text="Save"/> 

JS

<script type="text/javascript"> 
function isInputEmpty() { 
    $("#btnSave").click(function(){ 
     $('input[type=text]').each(function(){ 
      var x = this.value; 

      var bool = false; 
      if(x === null || x === "") 
      { 
       bool = true; 
      } 
      else 
      { 
       send the request 
      } 
      if(bool === true) 
      { 
       if(confirm('Are you sure you want to save a blank URL?')) 
       { 
        LoadData(); 
       } 
       else 
       { 
        return;//do nothing 
       } 
      } 
      else 
      { 
       send the request 
      } 
     } 
    } 


function LoadData() 
{ 
$.ajax({ 
    type: "GET", 
    url: 'page.aspx',  
    timeout: 1000,   
    success:function(data){  
    //do work 
    }, 
    error:function(jqxhr, status){ 
    if(status==="error"){ 
    //handle error 
    }  
}); 
} 
</script> 
+0

Это был очень полезный ответ. Я буду отмечать вашу запись как ответ, если вы также можете помочь мне с кодом, который мне нужно добавить вместо псевдокода «отправить запрос» и «ничего не делать или отменить запрос» – PeonProgrammer

+0

@ user2855535, так как вы запросили добавленный ' LoadData' для загрузки данных. отметьте его –

1

Поскольку это ASP.NET, этот идентификатор будет отображаться другим, попробуйте захватить идентификатор клиента (если JS находится в том же файле, если нет, используйте уникальный класс и назначьте обработчик через который)

$("#<%=btnSave.ClientID%>").click(function() { 
    $("input:text").each(function() { 
     if (!this.value.length) { 
      var confirm = confirm('are you sure you want to save a blank row') 
      .. 
     } 
    }); 
}); 
+0

спасибо, что используете 'this.value'. '$ (this) .val()' достаточно плохо, не говоря уже о '$ (this) .attr ('value')', который он использовал. – PlantTheIdea

+0

@PlantTheIdea - Не нужно получать jQuery happy :) – tymeJV

0

вы также можете сделать, как показано ниже ....

<script type="text/javascript"> 
      function isInputEmpty() { 
       var bool = false; 
       $("#btnSave").click(function() { 
        $('input[type=text]').each(function() { 
         var x = $(this).attr('value'); 
         if (x == null || x == "") { 
          bool = true; 
         } 
        }); 

        if (bool == true) { 
         if (confirm('Are you sure you want to save a blank URL?')) { 
          //send the request 
         } 
         else { 
          //do nothing or cancel the request 
         } 
        } 
        else { 
         //send the request 
        } 
       }); 
      } 
     </script> 
+0

Спасибо, что убрали мой код. Мой вопрос не был указан явно. Я хотел знать, где нужно изменить свой javascript, но также, какую логику мне нужно добавить вместо // отправить запрос // ничего не делать комментариев. Полный код не требуется, хотя и оценен. – PeonProgrammer

0

Это не совсем ясно, что ваш вопрос, но и другие ответы здесь по праву сосредоточены на вопросе ID и .Net WebForms изменяющимися ID элемента.

Другие предлагаемые решения являются точными, но есть и другой способ, и это поиск с помощью частичного идентификатора. Если для параметра clientIDmode не установлено значение static (или если вы pre .Net 4.0), то идентификатор .NET всегда будет иметь исходный идентификатор, добавленный после подчеркивания, поэтому вы можете найти свой элемент с помощью jquery следующим образом:

$("[id$='_btnSave']").click(function(){ ... 
+0

Вы правы, мой вопрос не был явно указан. Я хотел, чтобы мой код критиковал, излагая очевидные синтаксические/логические ошибки. И какую логику мне нужно добавить вместо псевдо «отправить запрос/ничего не делать» Полный код примера не требуется, хотя и очень ценится. – PeonProgrammer

Смежные вопросы