我有一个用户选择国家/地区的下拉列表。这是一个必需的“领域”。
在它旁边,有一个名为State的文本字段。如果用户选择US,则需要字段State。如果用户选择例如瑞典没有国家,因为瑞典没有州。
示例代码:
<asp:DropDownList runat="server" ID="Country"></asp:DropDownList>
<asp:RequiredFieldValidator ControlToValidate="Country"
runat="server" Display="Static" ErrorMessage="Required field" />
<asp:TextBox runat="server" ID="State"></asp:TextBox>
<asp:CustomValidator ClientValidationFunction="DoesntGetFiredIfStateIsEmpty"
runat="server" Display="Static" ErrorMessage="Required field" />
<!-- SO, RATHER THIS TOGETHER WITH CONDITIONAL FIRING -->
<asp:RequiredFieldValidator ControlToValidate="State"
runat="server" Display="Static" ErrorMessage="Required field" />
我的问题是:如果CustomValidator为空,我该如何进行FireValidator火灾验证呢?
或者说更简单:如何有条件地使RequiredValidator发射?
或最简单:如何在客户端启用/禁用RequiredValidator?
答案 0 :(得分:10)
尝试使用javascript启用和禁用验证器
ValidatorEnable(RequiredFieldValidatorId, false);
答案 1 :(得分:1)
Asp.net具有用于管理验证器的客户端javascript函数,“ ValidatorEnable”函数,
ValidatorEnable(RequiredFieldValidatorId, false);
您可以简单地使用javascript来调用它,必须将验证器对象发送给函数(不仅是其ID)。
if (x==y) {
ValidatorEnable($('#<%=rfvFamily.ClientID %>'), false);
} else {
ValidatorEnable($('#<%=rfvFamily.ClientID %>'), true);
}
或
if (x==y) {
ValidatorEnable(document.getElementById("<%=rfvFamily.ClientID %>", false);
} else {
ValidatorEnable(document.getElementById("<%=rfvFamily.ClientID %>", true);
}
完整的documnet上: http://msdn.microsoft.com/en-us/library/Aa479045#aspplusvalid_clientside
另一种方法是在您的DropDownList CausesValidation =“ false”中进行设置,以避免在更改DropDownList条目时验证程序阻止回发。
(*)请记住,此功能用于客户端,要在服务器端禁用验证器,也必须在页面回发时禁用验证器。
if (IsPostBack){
if (x==y) {
rfvFamily.Enabled = false;
}
}