Diose 发表于 2012-10-24 23:54:10

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]
查看完整版本: jquery.validationEngine 验证 AJAX 不起作用解决办法