我目前有一个表格,我使用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;
});
验证效果很好。我唯一的问题是当触发验证并显示错误消息时,选择“否”选项不会删除错误消息(但它不会阻止提交表单)。我需要做些什么来获得我正在寻找的效果?
答案 0 :(得分:3)
在change
输入的radio
事件中,您可以调用the .valid()
method来触发验证测试,该测试会根据需要切换相关的错误消息。
更改任何radio
输入时触发。仅重新评估要更改的radio
。
$('#myform input[type="radio"]').on('change', function() {
$(this).valid(); // <- re-validate this one radio input
});
更改任何radio
输入时触发。一次重新评估所有radio
输入。
$('#myform input[type="radio"]').on('change', function() {
$('#myform input[type="radio"]').valid(); // <- re-validate every radio input
});
更改任何radio
输入时触发。立即重新评估整个表格。
$('#myform input[type="radio"]').on('change', function() {
$('#myform').valid(); // <- re-validate this entire form
});
答案 1 :(得分:0)
为了记录,这里是我为实现我所寻找的目标所做的 - 在&#34; No&#34;单选按钮点击事件,我打电话:
var validator = $("form").validate();
validator.element("#textboxName");
这将验证输入并删除验证消息。我在文档here中找到了此解决方案。