如何使用不引人注目的jQueryvalidation手动重新validation/触发validation?

我创建了自己的条件validation属性,通过inheritanceRequiredAttribute并实现IClientValidatable来validation客户端和服务器上的MVC模型。 我的想法是,如果我的模型上的布尔属性为true,则需要另一个属性。 在视图中,这表示为一个复选框,用于指示是否需要填写文本框。

除了用户执行以下操作时,这非常有效:

  • 选中复选框(现在需要该字段)。
  • 提交表单(客户端validation运行,显示错误消息)。
  • 用户取消选中框(错误消息仍然存在,不再需要字段)。

我想在选中或取消选中复选框时重新validation表单,或者甚至更好地重新validation该字段,以便不再显示错误消息。 我已经尝试了调用jQuery validate()方法的各种组合,但似乎没有什么能够重新运行validation。

我使用以下javascript来设置我的validationfunction和相关的不显眼的适配器。

 $.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; } ); 

谢谢!

我有一个类似的问题,我想使用jquery validate和jquery ui重新validation一个datepicker字段。 这篇文章帮我搞清楚了。

关键,只是为该选择器的有效方法添加一个回调。 就像是:

 $(".requiredif").change(function() { $(this).valid(); }) 

您应该查看Foolproofvalidation 。 它可以做你想做的事,而不必自己动手。