2014-01-29 74 views
1

我正努力按照我需要的方式工作。我有兩個RequiredFieldValidators和兩個文本框(邊注:雖然我了Javascript低於我不介意以另一種方式做這個我也嘗試背後的代碼,但實現驗證didnt踢,直到我點擊了一個按鈕兩次。):根據條件驗證控件

<asp:TextBox ID="EmailTextbox" runat="server"></asp:TextBox> 
<asp:RequiredFieldValidator ID="EmailR" runat="server" ErrorMessage="Email" ControlToValidate="EmailTextbox" ></asp:RequiredFieldValidator> 
<asp:TextBox ID="NameTextbox" runat="server"></asp:TextBox> 
<asp:RequiredFieldValidator ID="NameR" runat="server" ErrorMessage="Enter your name" ControlToValidate="NameTextbox" ></asp:RequiredFieldValidator> 

然後我有一些腳本

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#<%=EmailTextbox.ClientID%>').keyup(function() { 
      if ($(this).val() != '') { 
       ValidatorEnable(document.getElementById('<%= NameR.ClientID%>'), true); 

       } 
       else 
        ValidatorEnable(document.getElementById('<%= NameR.ClientID%>'), false); 

      }); 
    }); 
</script> 

什麼即時試圖做的是:

如果EmailTextbox有電子郵件然後禁用NameTextbox驗證。 如果EmailTextbox沒有電子郵件,則啓用NameTextbox驗證並禁用EmailTextbox驗證。

隨着我對JQuery/Javascript很新穎,我試圖嘗試實現上述多次嘗試,但是閱讀更多的內容,我可能會有錯誤的JQuery文件(這是一個現有的項目我沒有真正添加任何JQuery的引用,所以它可能是我有代碼的權利,但需要一個JQuery的引用或需要包括一個新版本)。

總的來說,如果我能

感謝

回答

0

在你的代碼進行驗證使錯誤當電子郵件 值不上名空禁用驗證並啓用電子郵件其他反之亦然

 <script type="text/javascript"> 
    $(document).ready(function() { 
     $('#<%=EmailTextbox.ClientID%>').keyup(function() { 
      if ($.trim($(this).val()).length) 
       ValidatorEnable(document.getElementById('<%= NameR.ClientID%>'), false); 
       ValidatorEnable(document.getElementById('<%= EmailTextbox.ClientID%>'), true); 

       } 
       else 
       { 
        ValidatorEnable(document.getElementById('<%= NameR.ClientID%>'), true); 
        ValidatorEnable(document.getElementById('<%= EmailTextbox.ClientID%>'), false); 
       } 

      }); 
    }); 
</script> 
+1

請添加一些解釋你的答案 –

0

你可以試試這個,類似於你所擁有的。

function doSomething() 
{ 
    var myVal = document.getElementById('myValidatorClientID'); 
    ValidatorEnable(myVal, false); 
} 

或者,您可以使用可視=真/假對他們這使它們不活動(意爲從後面的代碼設置可見的屬性)。這可能會花費你一個Ajax之旅後面的代碼使用scripmanager和__doPostBack爲了調用一個服務器端函數,可以處理你的邏輯...很多開發人員至少在webforms中沒有意識到,你可以在JS的方法後面調用你的代碼,只是要非常小心 - 因爲每個調用背部可以得到昂貴的...

一篇好文章從(「前端通過JS背後守則」)通信 - http://www.codedigest.com/Articles/ASPNET/320_Doing_or_Raising_Postback_using___doPostBack()_function_from_Javascript_in_AspNet.aspx

希望能幫助你,讓你回到正軌!

1

,您可以嘗試

$(document).ready(function() { 
     $('#<%=EmailTextBox.ClientID%>').keyup(function() { 
      if ($(this).val() != null && $(this).val().length != 0) { 
       $('#<%= NameRequiredFieldValidator.ClientID%>').hide(); 

      } 
      else { 
       $('#<%= NameRequiredFieldValidator.ClientID%>').show(); 
       $('#<%= EmailRequiredFieldValidator.ClientID%>').hide(); 
      } 
     });