我创建了自己的条件验证属性,通过继承来在客户端和服务器上验证我的 MVC 模型RequiredAttribute
并实施IClientValidatable
。这个想法是,如果我的模型上的布尔属性为 true,则需要另一个属性。在视图中,这表现为一个复选框,指示是否需要填写文本框。
除非用户执行以下操作,否则此功能非常有效:
- 选中该复选框(该字段现在为必填字段)。
- 提交表单(运行客户端验证,显示错误消息)。
- 用户取消选中该框(错误消息仍然存在,不再需要字段)。
我想在选中或取消选中复选框时重新验证表单,或者更好的是重新验证该字段,以便不再显示错误消息。我尝试过调用 jQuery 的各种组合validate()
方法,但似乎没有什么能够重新运行验证。
我使用以下 JavaScript 来设置我的验证函数和关联的不显眼的适配器。
$.validator.addMethod(
"requiredif",
function(value, element, parameters) {
var selector = "#" + parameters["dependentpropertyname"];
var triggerValue = parameters["triggervalue"].toString().toLowerCase();
var actualValue = $(selector).is(":checked").toString().toLowerCase();
if (actualValue === triggerValue) return $.validator.methods.required.call(this, value, element, parameters);
return true;
});
$.validator.unobtrusive.adapters.add(
"requiredif",
["dependentpropertyname", "triggervalue"],
function(options) {
options.rules["requiredif"] = {
dependentpropertyname: options.params["dependentpropertyname"],
triggervalue: options.params["triggervalue"]
};
options.messages["requiredif"] = options.message;
}
);
Thanks!
我遇到了类似的问题,我想使用 jquery validate 和 jquery ui 重新验证日期选择器字段。这个帖子帮我弄清楚了。
关键是只需为该选择器的有效方法添加一个回调。就像是:
$(".requiredif").change(function() {
$(this).valid();
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)