jQuery.validate errorPlacement和success共用有问题
使用了success后呢 不论验证通过还是没有通过 errorPlacement都会被触发...
而且是先触发errorPlacement函数 再触发success函数
去掉success就很正常 只有出错时才会触发errorPlacement
这里是官方文档 http://jqueryvalidation.org/validate#errorPlacment
没看到这里说他们有冲突啊
另外我还参考了http://blog.51yip.com/jsjquery/1206.html
这是我的代码 不知道哪里有问题呢
<div id="em"></div>
<form id="signup-form" action="/account/signup" method="post" class="common-form">
<div id="yui_3_12_0_1_1389079738187_71"
class="field-group field-group--password">
<label for="signup-password">创建密码</label> <input name="password"
id="password" class="f-text" autocomplete="off" type="password">
</div>
<div id="yui_3_12_0_1_1389079738187_73" class="field-group">
<label for="password2">确认密码</label> <input name="password2"
id="password2" class="f-text" autocomplete="off" type="password">
</div>
<div class="field-group operate">
<input class="btn" name="commit" value="同意以下协议并注册" type="submit">
</div>
</form>
$(function() {
$("#signup-form").validate({
errorElement : "span",
//失去焦点时验证
onfocusout : function(element) {
$(element).valid();
},
onkeyup : false,
focusInvalid : false,
rules : {
password : {
required : true,
minlength : 5
},
password2 : {
required : true,
minlength : 5,
equalTo : "#password"
}
},
messages : {
password : {
required : "请输入密码",
minlength : jQuery.format("密码不能小于{0}个字 符")
},
password2 : {
required : "请输入确认密码",
minlength : "确认密码不能小于5个字符",
equalTo : "两次输入密码不一致不一致"
}
},
success:function(element){
$("#em").text($("#em").text()+'success');
},
errorPlacement : function(error, element) {
//error是错误提示元素span对象 element是触发错误的input对象
//发现即使通过验证 本方法仍被触发
//当通过验证时 error是一个内容为空的span元素
$("#em").text($("#em").text() + "error value is " + error.text());
element.nextAll('span').remove();
error.insertAfter(element);
}
});});