我有一个带有三个文本输入的ASP.NET表单,分别用于“工作电话”,“家庭电话”和“手机”。每个文本输入都有一个与之关联的RequiredFieldValidator。我还有一个DropDownList,用户可以在其中选择首选的手机类型。
我想只需要在DropDownList中选择的字段。例如,如果用户从DropDownList中选择“工作电话”,我想禁用“家庭电话”和“手机”的RequiredFieldValidator,从而只需要“工作电话”字段。
我有一个方法可以根据DropDownList的值启用和禁用这些验证器,但我无法确定何时调用它。我希望在页面上进行验证之前运行此方法。我该怎么办?
答案 0 :(得分:40)
您可以使用以下JavaScript执行此操作:
ValidatorEnable(RequiredFieldValidatorId, false);
然后让你的下拉列表使用onchange事件(我建议使用jQuery)
$("#<%=dropDownList.ClientID %>").change(function(){
var val = $(this).val();
var skip = null;
if (val == 1)
skip = "workPhoneValidator";
else if (val == 2)
skip = "cellPhoneValidator";
....
// by popular demand...
var $skip = $("#" + skip)[0];
if (skip != "workPhoneValidator") ValidatorEnable($skip, false);
if (skip != "cellPhoneValidator") ValidatorEnable($skip, false);
....
});
答案 1 :(得分:11)
为什么不在这种情况下使用CustomValidator?关闭/打开RequiredFieldValidator可能会在将来导致设计问题 - 我会坚持在需要的字段上使用它们。
答案 2 :(得分:5)
当您使用家庭电话时,在dropdown selectedindexchange事件中,使必需的字段验证器不可见。
像..
如果选择了家庭电话,
homephonevalidator.visible=true
cellphonevalidator.visible=false
workphonevalidator.visible=false
如果选择了手机,
homephonevalidator.visible=false
cellphonevalidator.visible=true
workphonevalidator.visible=false
如果选择了工作电话,
homephonevalidator.visible=false
cellphonevalidator.visible=false
workphonevalidator.visible=true
答案 3 :(得分:2)
下拉的OnChange事件可能有类似的内容
function EnableValidator(){
ValidatorEnable(requiredFieldValidator, validatorMustBeEnabled);
}
检查此网址。 “客户端API”部分
http://msdn.microsoft.com/en-us/library/Aa479045#aspplusvalid_clientside
答案 4 :(得分:2)
可能的方式是:
AutoPostBack="true"
SelectedIndexChanged
事件处理程序中启用/禁用验证程序CausesValidation="false"
中设置,以避免验证程序在您更改DropDownList条目时阻止回发。答案 5 :(得分:0)
DropDownlist的OnChange,您需要注册一个启用/禁用验证器的服务器端事件处理程序......
HTH
答案 6 :(得分:-1)
这是从jquery事件启用和禁用服务器端控制验证的好方法:
<label class="label_radio" for="Oversize" onclick="EnableDisbledValidator('show')">show textbox</label>
<asp:TextBox ID="txtNote" runat="server" class="checkvalidation"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvNote" runat="server" ControlToValidate="txtNote" SetFocusOnError="true" ErrorMessage="Please enter the note" Display="Dynamic" CssClass="error-tooltip"></asp:RequiredFieldValidator>
function EnableDisbledValidator(lblShow) {
if (lblShow == "hide") {;
ValidatorEnable($('#<%=rfvNote.ClientID %>')[0], false);
} else {
ValidatorEnable($('#<%=rfvNote.ClientID %>')[0], true);
}
}