version :jQuery validation plug-in 1.7
remote bug的大致情况。以普通的登录流程为例
1.相关代码 :
$("#form").validate({ rules: { loginId:"required" , password:"required" , code:{ remote: { url: "/verification-code!check.action", //后台处理程序 type: "post", //数据发送方式 dataType: "json" } } }, ......
2.bug的形成情景 :
如果第一次登录失败,仍返回到login页面,系统会自动切换验证码。此时输入正确的验证码后,不用键盘的“tab”切换,直接点击【login】按钮,此时界面会闪一下,并不提交,再按一次才会提交。
3.分析
remote采用的是异步提交,也就是不管最后的结果是true 还是false,都有一定的响应延迟,但是程序程序早已经往下执行了。validation框架就认为verification code的验证结果为false。不提交。
4.解决
修改代码,将异步提交改成同步提交。比如:
$.ajax($.extend(true, {
url: param,
mode: "abort",
port: "validate" + element.name,
dataType: "json",
data: data,
async: false,
//同步加载 不加会有bug