自定义验证器问题
我的页面上有许多不同类型的 ASP.NET 验证器,其中一些验证器我根据页面上的用户选择使用 javascript 禁用。
$.each(Page_Validators, function(index, validator)
{
if ($(validator).hasClass("pain")) {
ValidatorEnable(validator, false);
}
});
这似乎有效,并且验证器在所有情况下都不会触发,除了我在无法使用其他验证器类型时使用的任何 CustomValidators 之外
<asp:CheckBoxList id="BodyPartsList" runat="server" RepeatColumns = "2"
Width="1023px">
<asp:ListItem Text = "0. Head/headaches" Value = "1"></asp:ListItem>
<asp:ListItem Text = "1. Leg(s)" Value = "2"></asp:ListItem>
<asp:ListItem Text = "2. Arm(s)" Value = "3"></asp:ListItem>
<asp:ListItem Text = "3. Neck" Value = "4"></asp:ListItem>
<asp:ListItem Text = "4. Shoulder(s)" Value = "5"></asp:ListItem>
<asp:ListItem Text = "5. Low Back" Value = "6"></asp:ListItem>
<asp:ListItem Text = "6. Upper Back" Value = "7"></asp:ListItem>
<asp:ListItem Text = "7. Feet" Value = "8"></asp:ListItem>
<asp:ListItem Text = "8. Hand(s)" Value = "9"></asp:ListItem>
<asp:ListItem Text = "9. Other(Describe in "Details of Plan")" Value = "10"></asp:ListItem>
</asp:CheckBoxList>
<asp:CustomValidator ID="PainLocationValidator" runat="server" Display="Dynamic"
ErrorMessage="Location of pain is required."
ClientValidationFunction="checkPainListValidate"
ValidationGroup = "OnSave" EnableClientScript= "true" SetFocusOnError= "true" Width = "100%" CssClass = "pain" />
function checkPainListValidate(sender, args) {
args.IsValid = true;
if ($('#<%= BodyPartsList.ClientID %> input:checked').length > 0)
args.IsValid = true;
else
args.IsValid = false;
}
为什么会发生这种情况?我还能做些什么来禁用这些功能吗?
谢谢。
I have a number of ASP.NET validators on my page of various types, some of which I am disabling depending on user selections on a page, using javascript.
$.each(Page_Validators, function(index, validator)
{
if ($(validator).hasClass("pain")) {
ValidatorEnable(validator, false);
}
});
This seems to work and validators do not fire in all cases except any CustomValidators that I am using whenever I cannot use other validator types
<asp:CheckBoxList id="BodyPartsList" runat="server" RepeatColumns = "2"
Width="1023px">
<asp:ListItem Text = "0. Head/headaches" Value = "1"></asp:ListItem>
<asp:ListItem Text = "1. Leg(s)" Value = "2"></asp:ListItem>
<asp:ListItem Text = "2. Arm(s)" Value = "3"></asp:ListItem>
<asp:ListItem Text = "3. Neck" Value = "4"></asp:ListItem>
<asp:ListItem Text = "4. Shoulder(s)" Value = "5"></asp:ListItem>
<asp:ListItem Text = "5. Low Back" Value = "6"></asp:ListItem>
<asp:ListItem Text = "6. Upper Back" Value = "7"></asp:ListItem>
<asp:ListItem Text = "7. Feet" Value = "8"></asp:ListItem>
<asp:ListItem Text = "8. Hand(s)" Value = "9"></asp:ListItem>
<asp:ListItem Text = "9. Other(Describe in "Details of Plan")" Value = "10"></asp:ListItem>
</asp:CheckBoxList>
<asp:CustomValidator ID="PainLocationValidator" runat="server" Display="Dynamic"
ErrorMessage="Location of pain is required."
ClientValidationFunction="checkPainListValidate"
ValidationGroup = "OnSave" EnableClientScript= "true" SetFocusOnError= "true" Width = "100%" CssClass = "pain" />
function checkPainListValidate(sender, args) {
args.IsValid = true;
if ($('#<%= BodyPartsList.ClientID %> input:checked').length > 0)
args.IsValid = true;
else
args.IsValid = false;
}
Why is this happening? Is there something else I can do to disable those as well?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一些 aspx 标记会很有帮助,但无论如何,这里有一些想法:
validatorEnable
而不是ValidatorEnable 的类型?您收到任何 JavaScript 错误吗?
EnableClientScript
设置为 trueClientValidationFunction
?document.getElementById('<%=MyValidator.ClientID %>').disabled=true;
禁用它?我假设您使用了错误的 ID 在客户端获取验证器。
我已经测试了您的代码,但无法重现此行为:
这是我的 Javascript 函数,用于禁用所有验证器(经过编辑以考虑您的痛苦类别):
Some aspx-markup would be helpful, but anyway here are some ideas:
validatorEnable
instead ofValidatorEnable
? Do you get any javascript errors?EnableClientScript
to trueClientValidationFunction
that gets called on clientside?document.getElementById('<%=MyValidator.ClientID %>').disabled=true;
?I assume that you're using the wrong ID to get the validator in clientside.
I have tested your code and can not reproduce this behaviour:
This is my Javascript-function to disable all validators(edited to take your pain-class into account):