ajax同步或alert对onblur和onclick顺序有影响导致提交要点两次
2014-01-12 12:21
337 查看
<input id="phone" name="phone" onblur='checkPhone();' type="text"> <button type="button" id="sub" onclick='sub();'>提交</button> <script type="text/javascript"> function checkPhone(){alert('checkPhone');} function sub(){alert('sub');} </script>
填写手机号码以后,立即点击提交,会发现只调用了checkPhone,没有调用到sub,点击第二次才调用sub。
如果不使用alert,换成比如$().html();其他的动作,不会出现这个情形。
预期的效果,是点击提交时先调用checkPhone,然后调用sub,但是却必须点击提交按钮两次才行。
这里把alert换成ajax提交并且设置参数异步async为false。效果和alert一样。如果设置为true,便正常。
原因就是alert和ajax同步时对onblur和onclick顺序有影响。似乎有某种锁定的作用。
解决办法:1个方法是onclick改为onmousedown,这样在鼠标击下时就会弹窗弹出来。onclick是击下并松开是才动作。这个方法不太符合操作习惯。
2是在ajax里面设置async为变量,默认为true。
var async = true; $.ajax({ type: "post", url: "/member/checkPhoneByMbId.do", dataType: "json", data:{ phone:$("#phone").val() }, async: async, contentType: "application/x-www-form-urlencoded; charset=UTF-8", success: function(msg){ phoneFlag == true })
提交时如果要调用一次onblur,则设置ajax为同步
async = false; $("#phone").blur(); async = true; if(phoneFlag == true)
相关文章推荐
- ajax中的异步请求,导致数据顺序可能有问题,改成ajax同步的就好了,
- 表单提交前onclick使用reuturn时,ajax请求同步异步的一点注意事项
- ajax异步、同步问题,KindEditor ajax提交内容,ajax提交form表单 解决按两次的问题
- JQuery使用Ajax同步提交数据
- ie8 ajaxSubmit上传文件提示下载和提交表单两次
- Ajax同步调用影响加载动画展示
- 多次连续点击导致Ajax重复提交
- input、buttonde在ajax提交表单时导致的错误
- 一个奇怪的问题使用ajax提交必须alert才能赋值
- 探求网页同步提交、ajax和comet不为人知的秘密(上篇)
- 图片导致表单两次提交
- ajax 提交 form表单 ,后台执行两次的问题
- 等待Ajax结果 再提交表单(ajax同步)
- SQLServer 2012之AlwaysOn —— 指定数据同步链路,消除网络抖动导致的提交延迟问题
- ajax同步导致ajax上面的代码不执行?
- ajax同步提交数据,并把请求返回值赋值给全局变量
- ajax不能给全局变量赋值,只能采用同步提交的方式?
- SQLServer 2012之AlwaysOn —— 指定数据同步链路,消除网络抖动导致的提交延迟问题
- ajax提交表单碰到页面刷新和发送两次请求的问题
- 探求网页同步提交、ajax和comet不为人知的秘密(中篇)