代码之家  ›  专栏  ›  技术社区  ›  Omu

与jquery.validate一起使用时,livequery不总是活动的

  •  1
  • Omu  · 技术社区  · 15 年前

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

    当我得到jquery.validate生成的此类的一些跨距时,上面的代码可以工作,但是在第二次验证时它不能工作。

    http://mrgsp.md:8080/awesome/person 单击“保存后创建”以获取验证消息,然后再次单击“保存”

    2 回复  |  直到 15 年前
        1
  •  1
  •   Chao    15 年前

    我读了其他的评论,看到你在使用xVal,读一点jQuery.Validate验证也。jQuery.Validate验证与许多事件的关联和在事件处理程序上注册会很混乱。livequery第一次工作的原因是,如果标签以前不存在,则会生成这些标签,这样创建事件使函数运行,每次在此之后,标签都被隐藏/显示,这样就不会再次被触发,但是jQuery.validate验证的showLabel函数重置类。

    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正在设置validate插件。

        2
  •  1
  •   Petah    15 年前

    你能不能不选择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"
    });