2012-04-19 29 views
0

我有一個asp.net按鈕:驗證文本框,但回發重置隱藏字段?

<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" /> 

爲了維護是否頁面或不存在錯誤的狀態。 這是因此,如果在表格上存在錯誤,我可以設置,否則我將其設置爲0。

我點擊此按鈕後,它將該值設置爲1表示#ERROR(這僅僅是一個div的值以1 ),但是那個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,顯示錯誤消息,但然後再次消失......這是我遇到的問題。 – oJM86o 2012-04-19 21:28:55

+0

我認爲它與我的jQuery代碼的開始有關,在我列出所有jQuery的末尾處查看我的帖子。它看起來像這個隱藏的字段是空的後回發... – oJM86o 2012-04-19 21:31:25

+0

更新:),問題是,當呈現它的ASP按鈕變換爲提交按鈕,每次你點擊它,頁面重新發送到服務器並導致回發。所以你可以使用.preventDefault()來避免回發。 – jcvegan 2012-04-19 21:42:10