如何在jquery中调用验证错误?

时间:2010-11-04 06:29:42

标签: jquery html css jquery-ui

我有一个jquery代码,在点击时会动摇div。

    $("#error").click(function() {
        $("#box-login").show('shake', 55);
        $(".header-login").show('shake', 55);
        $("#content-login .error").show('blind', 500);
        return false;
    });

我希望在存在表单验证错误时将其称为函数,例如......

  $("#box-login").validate({
    rules: {
      username: "required",// simple rule, converted to {required:true}
      password: {// compound rule
      required: true,
      email: true
    },
    url: {
      url: true
    },
    comment: {
      required: true
    }
    },
    messages: {
      comment: "Please enter a comment."
    }
  });
});

如何将这两者结合起来,还是有其他更好的方法可以在出现错误时将抖动作为函数调用?请帮忙。

2 个答案:

答案 0 :(得分:3)

最重要的是让你的摇动功能成为自己命名的,可重复使用的功能:

function shakeIt() {
    $("#box-login").show('shake', 55);
    $(".header-login").show('shake', 55);
    $("#content-login .error").show('blind', 500);
    return false;
}

然后从clickinvalidHandler处理程序(直接或间接)调用该函数:

$("#error").click(shakeIt);

$("#box-login").validate({
    // ...rules etc...
    invalidHandler: shakeIt
});

现在,我直接打电话给它。请注意,在两种情况下将使用不同的参数调用它;如果你想对这些参数做一些事情,你可能有单独的事件处理程序,它们都调用你的shakeIt函数:

$("#error").click(function(event) {
    // ...do something with `event`...
    shakeIt();
});

$("#box-login").validate({
    // ...rules etc...
    invalidHandler: function(form, validator) {
        // ...do something with `form` and/or `validator`...
        shakeIt();
    }

});

(两者都可能被命名为可重复使用的函数,但如果它们真的是一次性的,如果你喜欢匿名函数 - I don't - 以上就可以了。)

这基本上只是模块化的一个具体例子,它通常是编写软件的一个很好的指导原则:将这些部分缩小并重复使用,然后将它们串在一起做事。

答案 1 :(得分:1)

invalidHandler添加到您的对象中。请参阅validate() options

 $("#box-login").validate({
    rules: {
      username: "required",// simple rule, converted to {required:true}
      password: {// compound rule
      required: true,
      email: true
    },
    url: {
      url: true
    },
    comment: {
      required: true
    }
    },
    messages: {
      comment: "Please enter a comment."
    },
    invalidHandler: function() {
        $("#box-login").show('shake', 55);

    }
  });
});