为什么不将您的函数挂钩到触发 validate() 的同一事件中?
更新
我阅读了其他评论,发现您正在使用 xVal,也阅读了一些关于 jQuery.Validate 的内容。jQuery.Validate 与许多事件相关联,在事件处理程序上注册会很麻烦。livequery 第一次工作的原因是如果标签以前不存在,则生成标签,以便创建事件使函数运行,每次之后标签只是隐藏/显示,所以它不会再次被触发,而是 jQuery。 validate 的 showLabel 函数重置类。
理想的位置是在 xVal 中,只需对xVal.jquery.validate.js
文件进行一点小改动。该_ensureFormIsMarkedForValidation
方法中有以下几行:
ensureFormIsMarkedForValidation: function(formElement, options) {
if (!formElement.data("isMarkedForValidation")) {
formElement.data("isMarkedForValidation", true);
var validationOptions = {
errorClass: "field-validation-error",
您需要做的就是将 errorClass 更改为:
errorClass: "field-validation-error ui-state-error ui-corner-all",
这是因为 xVal 正在设置验证插件。