我讀過有關如何從一個JavaScript函數退出以下後退出:從javascript函數
How can I exit from a javascript function?
我想要的例子適應我的代碼,但我失去了一些東西/做錯事。
我有以下的jQuery代碼:
$('#main_submit_button').live('click', function(){
check_for_duplicate_rule().done(function(result) {
console.log("result from check for duplicate" + result);
if (result == 'true') {
$('#validation_error').html("A similar rule already exists");
return;
}
});
//}
console.log("i made it this far");
return false;
console.log($('#rule_form').serialize());
}
當我測試使用重複的數據,該系統能夠正確顯示,說:「類似的規則已經存在」,但它也顯示了一個錯誤消息「我做到了這一點」在控制檯中。 它不顯示窗體serialize()命令的結果。 我期待代碼在設置錯誤消息後立即退出.click甚至處理程序。
我試過把「return」語句改成「return false」,但那也行不通。 你能告訴我我做錯了什麼嗎?最終,我希望這個例程做的是在將數據提交給服務器之前執行幾個客戶端驗證檢查。 所以我會在需要「返回」或退出的函數中有多個點。
感謝
編輯1
我已經改變了代碼的樣子:
var bduplicate = false;
check_for_duplicate_rule().done(function(result) {
console.log("result from check for duplicate" + result);
if (result == 'true') {
$('#validation_error').html("A similar rule already exists");
bduplicate = true
return;
}
});
//}
if (bduplicate) {
return;
}
console.log("i made it this far");
但它仍然打印消息 「我做了這麼遠。」 我認爲這個問題可能與我的check_for_duplicate_rule函數有關。 ?? 它看起來像這樣:
function check_for_duplicate_rule() {
var parameters = {
num: $('#num').val(),
condition: $('#condition').val(),
cdidnumber: $('#cdidnumber').val()
}
return $.getJSON(
url = aURLdefinedsomewhere,
parameters,
function(data) {
//if (data=='true') {
//$('#validation_error').html("A similar rule already exists");
//}
}//end data
);//end getJSON
}
我所看到的控制檯是消息「從檢查重複真實結果」在打印後的「我做了這麼遠」,這似乎表明我正在檢查我沒有...的結果?如果這是真的,我真的不知道如何去解決它。
第一'return'從'.done返回代碼()'函數。 – tymeJV
tymeJV,這很有道理!我試圖糾正代碼,但它仍然無法正常工作。請檢查我的Edit 1 –