【发布时间】:2015-01-16 01:55:40
【问题描述】:
我目前有一个使用 jquery 验证的表单。该表单包含许多单选按钮(“是”、“否”),并且每个相应的“是/否”单选按钮组都有一个描述文本框,如果用户选择“是”,则需要该文本框。像这样:
这是执行验证的方法:
$.validator.addMethod('conditionalrequired', function (value, element, params) {
var input = $(params);
var checked = input.prop('checked');
if (checked) {
return value != '' && value != "0";
}
return true;
});
$.validator.unobtrusive.adapters.add("conditionalrequired", ["boolpropertyname"], function (options) {
options.rules["conditionalrequired"] = "#" + options.params.boolpropertyname + 'Yes';
options.messages["conditionalrequired"] = options.message;
});
验证效果很好。我唯一的问题是当验证被触发并显示错误消息时,选择“否”选项不会删除错误消息(虽然它不会阻止表单被提交)。我需要做什么才能获得我想要的效果?
【问题讨论】:
-
jQuery Validate 插件默认已经可以自己处理
radio按钮。非常不清楚为什么您发现需要为此创建自定义方法。您需要解释并向我们展示复制问题所需的其余代码。你的.validate()方法在哪里?相关的 HTML 标记在哪里? -
感谢您的回复。不需要单选按钮选择。默认情况下,它总是以一种或另一种方式选择。如果选择了是单选按钮,则需要填写文本框。页面上有多个这样的实例。我能够做的是循环并验证“否”选择的表单。
-
这并不完全正确。也可以在未选择
radio按钮的情况下加载表单;所以在那种情况下required是完全合理的。但是,在您的情况下,插件应该仍然正确地自动切换消息,因为它将radio输入与checkbox输入相同。同样,我们需要查看足够多的代码来重现您的问题。 -
对不起。当我说“默认情况下”时,我指的是我的表格。我在控制器上设置了值。我能够弄清楚我在寻找什么。如果让您感到困惑,我深表歉意。
标签: jquery radio-button jquery-validate