jquery.validationEngine 验证 AJAX 不起作用解决办法
近来使用jquery 验证插件 异步验证不起作用的问题官网地址:http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/
具体使用看官网文档
使用ajax时 返回必须是json形式:
json名字可以随意,但位置 必须是验证的控件id,位置是是否成功
http://images.cnblogs.com/cnblogs_com/diose/QQ截图20120830175956.jpg
使用ajax时 一直处于等待验证状态,验证不起作用:
http://images.cnblogs.com/cnblogs_com/diose/QQ截图20120830175418.jpg
原因是因为内置json接收方式不对,所以 我们需要修改js文件代码
打开 jquery.validationEngine.js 文件
搜索 "$.ajax" 找到第二个 $.ajax
找到 success 回调处理函数
jsonValidateReturn就是你ajax处理返回的json数据的名字
success: function(json) {
// asynchronously called on success, data is the json answer from the server
var errorFieldId = json; //修改这里json 修改成json.jsonValidateReturn
//var errorField = $($("#" + errorFieldId));
var errorField = $($("input"));
// make sure we found the element
if (errorField.length == 1) {
var status = json; //修改这里json 修改成json.jsonValidateReturn
// read the optional msg from the server
var msg = json; //修改这里json 修改成json.jsonValidateReturn我们并没有返回消息 所以这里是null
if (!status) {
// Houston we got a problem - display an red prompt
options.ajaxValidCache = false;
options.isError = true;
// resolve the msg prompt
if(msg) {
if (options.allrules) {
var txt = options.allrules.alertText;
if (txt) {
msg = txt;
}
}
}
else
msg = rule.alertText;
methods._showPrompt(errorField, msg, "", true, options);
} else {
if (options.ajaxValidCache !== undefined)
options.ajaxValidCache = true;
// resolves the msg prompt
if(msg) {
if (options.allrules) {
var txt = options.allrules.alertTextOk;
if (txt) {
msg = txt;
}
}
}
else
msg = rule.alertTextOk;
// see if we should display a green prompt
if (msg)
methods._showPrompt(errorField, msg, "pass", true, options);
else
methods._closePrompt(errorField);
}
}
errorField.trigger("jqv.field.result", );
}
页:
[1]