我正在使用这个插件 http://jqueryvalidation.org/validate
我要做的是在验证完成后操纵错误消息的元素。但是,使用此代码
$(".selector").validate({
errorClass: 'error-message'
invalidHandler: function(event, validator) {
console.log($("#myDiv").find('.error-message').length);
}
});
输出0,正如我猜测的那样,因为此函数在将错误消息输出到html之前有效。如何在验证完成后运行我的代码,并且错误div元素已经插入到页面中。
更新
myDiv
元素是特定输入的div,而不是整个表单,我想调用一个函数来移动该div末尾的error元素(我的div中有另一个元素)只是它看起来像这样
if ($("#myDiv").find('.error-message').length > 0) {
$("#myDiv").find('.error-message').appendTo($("#myDiv"));
}
由于
答案 0 :(得分:0)
试试这可能你想要这个
if(! $(".selector").valid())
{
console.log($("#myDiv").find('.error-message').length);
}
答案 1 :(得分:0)
您的代码......
invalidHandler: function(event, validator) {
console.log($("#myDiv").find('.error-message').length);
}
你是对的。这只是一个计时问题,它会在消息显示之前触发。除非在单击按钮时已显示错误消息,否则此方法将失败。
但是,我不知道为什么你要问如何根据the example in the documentation计算错误消息,就像已存在内置方法一样。
invalidHandler: function(event, validator) {
var errors = validator.numberOfInvalids(); // reports the number of errors
console.log(errors);
}
DEMO:http://jsfiddle.net/nv282zom/
FWIW,您的代码中也存在缺陷,因为您只计算具有错误类的元素。 This will always give you double the number of elements因为错误类已应用于input元素和错误消息。
引用OP :
“我要做的是在验证完成后操纵错误消息的元素。”
但是,你只是告诉我们你想要数数。还有许多其他回调函数和选项可用于错误消息操作......只需解释您想要的内容。