Re-validate 输入单选按钮选择
Re-validate input on radio button selection
我目前有一个使用 jquery 验证的表单。该表单包含多个单选按钮("yes"、"no"),每个对应的 yes/no 单选按钮组都有一个描述文本框,如果用户选择 "Yes",则需要该文本框。像这样:
这是执行验证的方法:
$.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;
});
验证效果很好。我唯一的问题是当触发验证并显示错误消息时,选择 "No" 选项不会删除错误消息(尽管它不会阻止提交表单)。我需要做什么才能达到我想要的效果?
郑重声明,这是我为实现我的目标所做的工作 - 在 "No" 单选按钮单击事件中,我调用:
var validator = $("form").validate();
validator.element("#textboxName");
这会验证输入并删除验证消息。我在文档 here.
中找到了这个解决方案
在 radio
输入的 change
事件中,您可以调用 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
});
我目前有一个使用 jquery 验证的表单。该表单包含多个单选按钮("yes"、"no"),每个对应的 yes/no 单选按钮组都有一个描述文本框,如果用户选择 "Yes",则需要该文本框。像这样:
这是执行验证的方法:
$.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;
});
验证效果很好。我唯一的问题是当触发验证并显示错误消息时,选择 "No" 选项不会删除错误消息(尽管它不会阻止提交表单)。我需要做什么才能达到我想要的效果?
郑重声明,这是我为实现我的目标所做的工作 - 在 "No" 单选按钮单击事件中,我调用:
var validator = $("form").validate();
validator.element("#textboxName");
这会验证输入并删除验证消息。我在文档 here.
中找到了这个解决方案在 radio
输入的 change
事件中,您可以调用 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 });