生活随笔
收集整理的這篇文章主要介紹了
onsubmit校验表单时利用ajax的return false无效解决方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
代碼:
function checkNewEmail(){var re_email =
new RegExp("\\w+@\\w+\\.\\w+\\.?\\w*"
);var newEmail =$("#email_new"
).val(); if (re_email.test(newEmail)){$.ajax({type: "post"
,dataType: "json"
,url: "existEmail?email="+
newEmail,success:function(dataResult){ if (dataResult=="true"
){$( "#emial-error").text("郵箱已注冊。"
); return false ;} else { return true ;}}});} else { return false ;}} 每次郵箱格式正確用ajax判斷郵箱是否已存在時,無論成功否都執行submit,卡了好久,網上找了好多,終于找到原因也解決方案了。 問題原因 執行ajax時return false的function 與onsubmit()不是同一個函數,所以無論return 什么都會直接執行submit()提交表單ok知道錯誤原因了之后修改一下代碼 修改后代碼:
function checkNewEmail(){var flat =
false ;var re_email =
new RegExp("\\w+@\\w+\\.\\w+\\.?\\w*"
);var newEmail =$("#email_new"
).val(); if (re_email.test(newEmail)){$.ajax({type: "post"
,dataType: "json"
,url: "existEmail?email="+
newEmail,success:function(dataResult){ if (dataResult=="true"
){$( "#emial-error").text("郵箱已注冊。"
);flat =
false ;} else {flat =
true ;}}});} else { return false ;} return flat;} 修改之后再執行,可是每次執行完都return false,就好像flat=true,不起作用一樣,可是調試了發現明明有執行flat=true 問題原因 在執行ajax時,async默認的默認值為true,這種情況為異步方式,就是說ajax發送請求后,在等待服務端返回的這個過程中,前臺會繼續執行ajax塊后面的腳本,直到服務端返回正確的結果才會執行success,也就是說這時執行的是兩個線程,一個線程在執行ajax時另一個進程已經執行return flat了。所以一直返回false.把async改為false,這時才是同步方式,只有一個線程。 找到原因后,再修改一下代碼,最終終于成功了。 最終代碼
function checkNewEmail(){var flat =
false ;var re_email =
new RegExp("\\w+@\\w+\\.\\w+\\.?\\w*"
);var newEmail =$("#email_new"
).val(); if (re_email.test(newEmail)){$.ajax({type: "post"
,dataType: "json"
,async: false ,
// 同步方式 url:"existEmail?email="+
newEmail,success:function(dataResult){ if (dataResult=="true"
){$( "#emial-error").text("郵箱已注冊。"
);flat =
false ;} else {flat =
true ;}}});} else {$( "#emial-error").text("郵箱格式不正確。"
); return false ;} return flat;} 轉自:https://blog.csdn.net/u010079945/article/details/38680769
轉載于:https://www.cnblogs.com/lzw123-/p/9822626.html
總結
以上是生活随笔 為你收集整理的onsubmit校验表单时利用ajax的return false无效解决方法 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。