【发布时间】:2019-02-15 20:42:16
【问题描述】:
我正在使用带有 jQuery 1.7.2 的 MVC 3,并且我已经在客户端和服务器端实现了一些自定义验证,以验证某个文本区域是否具有文本(如果选中了一个复选框)。
我实现不显眼验证的客户端代码如下所示:
$.validator.addMethod("requiredif", function (value, element, params) {
if (value) {
var id = '#' + params["otherproperty"];
var control = $(id);
if (control.val() == '') {
return false;
}
}
return $.validator.methods.required.call(this, value, element, params);
});
$.validator.unobtrusive.adapters.add("requiredif", ["otherproperty"], function(options) {
options.rules["requiredif"] = options.params;
options.messages["requiredif"] = options.message;
});
我的问题是,如果我随后返回并取消选中复选框(即不再需要文本),即使验证触发,验证消息仍然存在并且验证不会被清除。
我已尝试以下方法来清除验证:
$('#Dashboard').on('change', '#Damaged', null, function () {
var validator = $('#Gridform').validate();
validator.resetForm();
});
但这没有任何区别。
我希望验证与标准验证一样工作,即当我取消选中复选框或在文本区域中输入内容时,验证被清除/重置。
【问题讨论】:
-
你在使用“ValidationMessageFor”助手吗?
-
问题是这个
requiredif适配器是和textarea关联的,而不是和checkbox关联的。 -
嗨达林,你是对的,这与错误的控制有关!其他两个问题仍然存在(1)验证摘要仍然存在,(2)验证在 IE7 中不起作用
-
感谢 Yasser,该代码中有一些很好的指示
标签: jquery asp.net-mvc-3 unobtrusive-validation