2012-08-01 38 views
1

根據用戶在完成表單時的反應,控件可能需要也可能不需要。所有這些控件都附帶了驗證。例如,如果用戶至少沒有住在他們的地址2年,我需要驗證以前的地址信息;如果不是,我需要跳過驗證。禁止在asp.net控件上驗證

我試着禁用驗證控件與jQuery,雖然當驗證文本是'變灰',它仍然會導致驗證。

<script src="../../Scripts/jquery-1.6.1.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#ddlSpouseData').change(
      function() { 
       var selection = $('#<%= ddlAddressData.ClientID%>').get(0).selectedIndex; 
       if (selection == 1) { 
        alert(selection); 
        $('#rfvAddressType').attr('disabled', 'disabled'); 
        $('#rfvBAddress').attr('disabled', 'disabled'); 
       } 

      }); 
    }); 
</script> 

     <table id="MyTable" class="tableModule"> 
      <tr> 
       <td class="tableDataBorder"> 
        Data is not available and<br /> will be provided later. 
       </td> 
       <td class="tableDataBorder"> 
        <asp:DropDownList ID="ddlAddressData" runat="server"> 
         <asp:ListItem>Please Select</asp:ListItem> 
         <asp:ListItem>Yes</asp:ListItem> 
         <asp:ListItem>No</asp:ListItem> 
        </asp:DropDownList> 
       </td> 
      </tr> 
      <tr class="hideRow"> 
       <td class="tableDataBorder"> 
        Identifying Document 
       </td> 
       <td class="tableDataBorder"> 
        <asp:DropDownList ID="ddlAddressType" runat="server"> 
         <asp:ListItem>Please Select</asp:ListItem> 
         <asp:ListItem>Home</asp:ListItem> 
         <asp:ListItem>Office</asp:ListItem> 
         <asp:ListItem>Other</asp:ListItem> 
        </asp:DropDownList> 
        <br /> 
        <asp:RequiredFieldValidator ID="rfvAddressType" CssClass="regexError" ControlToValidate="ddlAddressType" 
         runat="server" ErrorMessage="Please select address type" Display="Dynamic" 
         InitialValue="Please Select"></asp:RequiredFieldValidator> 
       </td> 
      </tr> 
      <tr class="hideRow"> 
       <td class="tableDataBorder"> 
        Address 
       </td> 
       <td> 
        <asp:TextBox ID="txtAddress" MaxLength="50" runat="server" CssClass="StdTxtBox"></asp:TextBox><br /> 
        <asp:RequiredFieldValidator ID="rfvBAddress" CssClass="regexError" ControlToValidate="txtAddress" 
         runat="server" ErrorMessage="Please enter your address" Display="Dynamic"></asp:RequiredFieldValidator> 
       </td> 
      </tr> 
      </table> 
+0

也許回答這個問題以前將幫助。 http://stackoverflow.com/questions/2379445/enabling-disabling-asp-net-validation-controls-using-jquery – SeaSharp 2012-08-01 21:23:06

回答

1

而不是你的的RequiredFieldValidator的,使用的CustomValidator代替。

因此,例如,你可以改變你的'rfvAddressType'的RequiredFieldValidator如下:

<asp:CustomValidator runat="server" 
    id="valAddressType" 
    controltovalidate="ddlAddressType" 
    onservervalidate="cusCustom_ServerValidate" 
    errormessage="Please select address type" /> 

然後在服務器代碼:

protected void cusCustom_ServerValidate(object sender, ServerValidateEventArgs e) 
{ 
     if (ddlAddressType.SelectedItem.Value == "1")    
      e.IsValid = false; // or do any additional validation checks here!  
     else    
      e.IsValid = true; 
} 

更多細節在這裏:

+0

它運作得非常好 - 謝謝。來自Rolla網站的4個人也非常有幫助。問候! – Susan 2012-08-02 20:40:57

-2

嘗試在運行中禁用或啓用驗證程序以實現所需的功能。你可以試試這個代碼。我沒有測試過它。

//Syntax: 
ValidatorEnable(ValidatorContronName,Boolean); 
//Explanation:ValidatorContronName - This is ClientID of the Validation control. 
Boolean - true(Enable)/false(Disable) 
//Example: 
ValidatorEnable(document.getElementById('<%=rfvAddressType.ClientID%>'), false); 
+0

無法得到這個工作... redid的語法有點包括#標識爲ID: ValidatorEnable($('#<%= rfvAddressType.ClientID%>'),false); – Susan 2012-08-02 17:35:39