在注冊頁面,我們經常要用到頁面驗證,驗證到不符合要求的數據就阻止提交到服務器,如下

<script type="text/javascript"> function Check() { var phoneNumber = $.trim($("#PhoneNumber").val()); var isMobile=/^1?(3|5|7|8)\d{9}$/; if (isMobile.test(phoneNumber) == false) { alert("電話號碼格式錯誤"); $("#PhoneNumber").focus(); return; } } </script> <input type="submit" name="addNewAddress" value="保存收貨地址" class="saveNewAddress" onclick="Check()"/>
效果:這樣看起來貌似沒有問題,但是這樣往往能夠提示判斷出錯誤的手機號碼,但是卻不能阻止它提交到后台;
原因:其實是check()只是一個驗證手機號的動作,並沒有阻止提交的動作。提交表單時先執行check()這個函數再post,post的時候會執行頁面判斷(判斷一個值,具體是什么值需要了解整個post的過程,這里我也不太清楚)如果是true,就post頁面,如果是false,就不執行任何動作。
解決方法:在check()方法里執行驗證之后,如果驗證符合要求就返回true,否則返回false;在調用方法的地方加上“return 方法名”(這里就是return Check(););完整的代碼如下:
<script type="text/javascript"> function Check() { var phoneNumber = $.trim($("#PhoneNumber").val()); var isMobile=/^1?(3|5|7|8)\d{9}$/; if (isMobile.test(phoneNumber) == false) { alert("電話號碼格式錯誤"); $("#PhoneNumber").focus(); return false; } return true; } </script> <input type="submit" name="addNewAddress" value="保存收貨地址" class="saveNewAddress" onclick="return Check();"/>