jquery formValidator插件非常好用,但是有一个严重的Bug,在使用ajax验证的时候,如果输入框的内容已经存在,把鼠标放到输入框,不做任何修改再离开,则会提示错误,
这是这个插件犯的一个很愚蠢的错误
代码
oneIsValid:
function
(id, index) {
var returnObj = new Object();
returnObj.id = id;
returnObj.ajax = - 1 ;
returnObj.errormsg = "" ; // 自定义错误信息
var elem = $( " # " + id).get( 0 );
var settings = elem.settings;
var settingslen = settings.length;
// 只有一个formValidator的时候不检验
if (settingslen == 1 ) { settings[ 0 ].bind = false ; }
if ( ! settings[ 0 ].bind) { return null ; }
for ( var i = 0 ; i < settingslen; i ++ ) {
if (i == 0 ) {
if ($.formValidator.isEmpty(id)) {
returnObj.isvalid = true ;
returnObj.setting = settings[ 0 ];
break ;
}
continue ;
}
returnObj.setting = settings[i];
if (settings[i].validatetype != " AjaxValidator " ) {
$.formValidator.triggerValidate(returnObj);
} else {
returnObj.ajax = i;
settings[i].isvalid = true ;
}
if ( ! settings[i].isvalid) {
returnObj.isvalid = false ;
returnObj.setting = settings[i];
break ;
} else {
returnObj.isvalid = true ;
returnObj.setting = settings[ 0 ];
if (settings[i].validatetype == " AjaxValidator " ) break ;
}
}
return returnObj;
},
var returnObj = new Object();
returnObj.id = id;
returnObj.ajax = - 1 ;
returnObj.errormsg = "" ; // 自定义错误信息
var elem = $( " # " + id).get( 0 );
var settings = elem.settings;
var settingslen = settings.length;
// 只有一个formValidator的时候不检验
if (settingslen == 1 ) { settings[ 0 ].bind = false ; }
if ( ! settings[ 0 ].bind) { return null ; }
for ( var i = 0 ; i < settingslen; i ++ ) {
if (i == 0 ) {
if ($.formValidator.isEmpty(id)) {
returnObj.isvalid = true ;
returnObj.setting = settings[ 0 ];
break ;
}
continue ;
}
returnObj.setting = settings[i];
if (settings[i].validatetype != " AjaxValidator " ) {
$.formValidator.triggerValidate(returnObj);
} else {
returnObj.ajax = i;
settings[i].isvalid = true ;
}
if ( ! settings[i].isvalid) {
returnObj.isvalid = false ;
returnObj.setting = settings[i];
break ;
} else {
returnObj.isvalid = true ;
returnObj.setting = settings[ 0 ];
if (settings[i].validatetype == " AjaxValidator " ) break ;
}
}
return returnObj;
},
添加上掉绿字的那段,就不会不验证了。