我有一个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."
}
});
});
如何将这两者结合起来,还是有其他更好的方法可以在出现错误时将抖动作为函数调用?请帮忙。
答案 0 :(得分:3)
最重要的是让你的摇动功能成为自己命名的,可重复使用的功能:
function shakeIt() {
$("#box-login").show('shake', 55);
$(".header-login").show('shake', 55);
$("#content-login .error").show('blind', 500);
return false;
}
然后从click
和invalidHandler
处理程序(直接或间接)调用该函数:
$("#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);
}
});
});