2010-08-31 99 views
1

ASP.NET3.5 Webforms。我试图把验证器放在下拉列表中,只有当复选框被选中。验证DropDownList如果选中复选框

这不起作用。如果我在onclick事件中发出警报,它会显示。

<script language="javascript" type="text/javascript"> 
    function setVal(sender) { 
     var myVal = document.getElementById('<%=(DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ddlSupplierCouncilArea")%>'); 
     ValidatorEnable(myVal, !sender.checked); 
     ValidatorValidate(myVal) 
    } 
</script> 

<asp:CheckBox runat="server" ID="cbxIsSupplier" Text="I wish to register as a Supplier in the" 
            OnClick="setVal(this)" /> 

<asp:DropDownList ID="ddlSupplierCouncilArea" runat="server"> 
            <asp:ListItem>[Please select]</asp:ListItem> 
            <asp:ListItem Value="blah1">blah1</asp:ListItem> 
            <asp:ListItem Value="Waimakariri">blah2</asp:ListItem> 
           </asp:DropDownList> 
           <div class="validators"> 
            <asp:RequiredFieldValidator ID="rfvCouncilArea" runat="server" InitialValue="[Please select]" 
             ControlToValidate="ddlCollectorCouncilArea" ErrorMessage="Select a Council Area" 
             Enabled="false" ToolTip="Select a council area" ValidationGroup="CreateUserWizard1">* required</asp:RequiredFieldValidator> 
           </div> 

回答

0

您可以使用Firefox的Firebug插件来调试您的JavaScript代码,它使生活更轻松。

反正你可以重写你的函数类似这样的

 
function setVal(sender, drpClientID) 
{ 
    var myVal = document.getElementById(drpClientID); 
     ValidatorEnable(myVal, !sender.checked); 
     ValidatorValidate(myVal) 
} 

In asp.net code you should build your onclick attribute like this

 
cbxIsSupplier.Attributes.Add("onclick", "setVal(this, '" + ddlSupplierCouncilArea.ClientID + "')"); 

+1

其他开发人员解决了这个我使用jquery这似乎是一个更好的选择。 – 2010-10-14 22:34:18