我有一個表單,當我的用戶點擊「提交」時,我首先要檢查他們選擇的用戶名是否已被使用。我用ajax這個:ajax調用不等待
function submit() {
if (userNameTaken()) {
alert("Please choose a username that is not already in use.");
return false;
}
}
function userNameTaken() {
var taken = false;
var username = $("#username").val();
$.get("username_used.cgi", { "username": username }, function(data) {
taken = data > 0;
});
return taken;
}
所以我知道這是採取了用戶名時,該功能userNameTaken()
並返回true。
不管怎樣,表單幾乎可以保存,就好像javascript不會暫停並等待這個ajax調用完成,而是繼續繼續並評估。有關如何解決這個問題的任何想法,以便我的表單將等待這個Ajax調用,而不是提交?
如果用戶只是輸入任何輸入字段,表單將很高興地提交繞過驗證。 – 2012-01-01 03:20:54
您應該意識到,除IE以外的任何瀏覽器中,無需提交按鈕即可提交作品。嘗試一下http://jsfiddle.net/liho1eye/cdwqs/。答案是相關的,但嚴重缺陷。永遠不要將提交操作掛在按鈕上。請參閱關於您發佈的鏈接中明顯和危險錯誤答案的部分。 – 2012-01-01 07:37:55
:P謝謝你,但是這個事件可以通過使用keyup和preventDefault輕鬆避免。此外,沒關係,因爲你可以看到答案對OP是正確的和有幫助的。 – 2012-01-01 08:45:26