onSubmit="return checkForm();" 方法中:
在ajax里直接寫return false,是無效的。
因為它返回的是ajax中的success方法,而不是checkForm()。
因此可以設置一個全局變量用來做判斷,實現停止的效果。
注意:ajax一定要是同步的。
-------------------------------------------form表單代碼----------------------------------------
<form action="/1/mobile/codeJsLogin" onSubmit="return checkForm();" id="login_form" method="post">
------------------------------script代碼-----------------------------
<script>
function checkForm(){
var cname = $("#cname").val();
var randomSms = $("#randomSms").val();
n = false;//全局變量,以便下面做判斷
$.ajax({
type: "POST",
url: "/1/mobile/jsCode",
data: {cname:cname,randomSms:randomSms},
dataType: "json",
async: false,//一定要是同步請求,否則會跳轉;(ajax默認是異步的)
success: function(obj){
if (obj['error'] == '1') {
alert(obj['message']);
} else {
n = true;
alert(obj['message']);
}
}
});
//全局判斷
if(n) {
return true;
}else{
return false;
}
}
</script>
總結:
重要的兩個點:異步請求 + 全局變量的判斷
方法寫在 $(document).ready(function(){})容易出錯直接寫在 <script>