2012-04-19 2 views
0

У меня есть кнопка asp.net:проверить текстовое поле, но postback сбрасывает скрытое поле?

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

мне нужно держать runat=server, потому что я должен обрабатывать код позади, когда его щелкнул. Но в JQuery У меня есть это:

$("#MainContent_ibSave").click(function() { 
      if ($('#MainContent_txtShipToName').val().length == 0) { 
       $('#hErrorsExist').val("1"); 
       $('#error').show(); 
      } 
      else { 
       $('#hErrorsExist').val("0"); 
       $('#error').hide(); 
      } 

В основном то, что я здесь делаю, это просто проверка, если какой-либо текст был введен в #MainContent_txtShipToName. Я хочу отправить сообщение об ошибке, если ничего не введено. Для этого я думал, что я хотел бы добавить скрытое поле:

<input id="hErrorsExist" type="hidden" /> 

Для поддержания состояния, существует ли ошибка на странице или нет. Это так, если в форме существует ошибка. Я могу установить значение в 1, иначе я установил значение 0.

После того, как я нажму на эту кнопку, она установит значение в 1, показывает #error (это просто div), но затем div исчезает. Его как будто постбэк имеет сбросить значение hErrorsExist ...

Я даже добавил проверку в моем JQuery:

if ($('#hErrorsExist').val() == "0" || $('#hErrorsExist').val().length == 0) { 
      alert("about to hide"); 
      $('#error').hide(); 
      alert($('#hErrorsExist').val()); 
     } 
     else { 
      $('#error').show(); 
      alert($('#hErrorsExist').val()); 
     } 

Это первая вещь в моем документе готовой функции. Я не знаю, как справиться с этим, чтобы div #error оставался даже после того, как кнопка была отправлена ​​обратно. Если я введу значение и он проверяет, он должен установить hErrorsExist равным 0 и скрыть div #error и сохранить div скрытым после сообщения назад.

Вот полный JQuery:

$(document).ready(function() { 
     /*hide message container on top*/ 
     //alert($('#hErrorsExist').val().length); 
     if ($('#hErrorsExist').val() == "0" || $('#hErrorsExist').val().length == 0) { 
      alert("about to hide"); 
      $('#error').hide(); 
      alert($('#hErrorsExist').val()); 
     } 
     else { 
      $('#error').show(); 
      alert($('#hErrorsExist').val()); 
     } 

      $("#MainContent_ibSave").click(function() { 
      if ($('#MainContent_txtShipToName').val().length == 0) { 
       $('#hErrorsExist').val("1"); 
       alert("Setting to 1"); 
       alert($('#hErrorsExist').val()); 
       $('#error').show(); 
      } 
      else { 
       $('#hErrorsExist').val("0"); 
       alert("Setting to 0"); 
       alert($('#hErrorsExist').val()); 
       $('#error').hide(); 
      } 
     }); 
      }); 

ответ

1

Вы пробовали это?

$("#<%= MainContent_ibSave.ClientID %>").click(function (arg) { 
    arg.preventDefault(); 
    if ($('#MainContent_txtShipToName').val().length == 0) { 
     $('#hErrorsExist').val("1"); 
     $('#error').show(); 
    } 
    else { 
     $('#hErrorsExist').val("0"); 
     $('#error').hide(); 
    } 
}); 
+0

Выполняет то же самое ... Я нажимаю кнопку «Сохранить», и оно устанавливает значение 1, dispalys сообщение об ошибке, но затем снова исчезает ... Это проблема, которую я испытываю. – oJM86o

+0

Я думаю, что это связано с началом моего кода jquery, см. Мой пост в конце, где я перечисляю все мои jquery. Похоже, что это скрытое поле пусто после сообщения назад ... – oJM86o

+0

обновлено :) проблема состоит в том, что кнопка asp при преобразовании преобразуется в кнопку отправки, и каждый раз, когда вы нажимаете на нее, страница повторно отправляется на сервера и вызвать обратную передачу. поэтому вы можете использовать .preventDefault(), чтобы избежать обратной передачи. – jcvegan

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