1

我使用 jquerylive 插件向 .field-validation-error 类添加额外的 css 类,如下所示:

$(".field-validation-error").livequery(function () { 
    $(this).addClass('ui-state-error ui-corner-all'); 
});

当我使用 jquery.validate 生成的此类获得一些跨度时,上面的代码有效,但在第二次验证时却没有。

这是实时链接: http ://mrgsp.md:8080/awesome/person 单击保存后单击创建以获取验证消息,然后再次单击保存

4

2 回答 2

1

你不能只选择errorClass选项吗?

$(".selector").validate({
   errorClass: "field-validation-error ui-state-error ui-corner-all"
})

或许:

$.validator.setDefaults({ 
   errorClass: "field-validation-error ui-state-error ui-corner-all"
});
于 2010-10-12T10:14:27.760 回答
1

为什么不将您的函数挂钩到触发 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 正在设置验证插件。

于 2010-10-22T13:49:09.643 回答