2011-04-21 66 views
2

這是我以前關於使用AJAX來檢查用戶名的可用性註冊
jQuery: check username availability
現在,當我測試系統,阿賈克斯正常工作時的線程,但即使我用的是現有的用戶名,當我點擊「提交」按鈕時,表單將被提交。我想我需要額外的JavaScript來阻止這種情況的發生,我該怎麼做?非常感謝!的javascript:如果用戶名存在,則無法提交表格

+1

如果您希望繼續得到幫助,你可能要接受一個答案在提出更多問題之前的前一個問題。 – 2011-04-21 03:33:37

+1

對不起,我忘了,只是做了。 – Michael 2011-04-21 03:36:51

+0

可能的重複[如果禁用表單提交如果用戶名不可用](http://stackoverflow.com/questions/2864739/how-to-disable-form-submit-if-the-username-is-not-可用) – 2011-04-21 03:44:15

回答

1

建議您在確定用戶名是否重複時採取措施禁用您的提交按鈕。

以適應您的現有代碼:

if(data=="no"){ 
    $(this).html("This username already exists"); 
    $('input[name=submit]').attr('disabled', true); 
} 
else{ 
    $(this).html("Username is available!"); 
    $('input[name=submit]').attr('disabled', false); 
} 

如果你想重構它一點:

$('input[name=submit]').attr('disabled', (data=="no")); 
$(this).html((data=="no")?"This username already exists":"Username is available!"); 
+0

謝謝!這有幫助! – Michael 2011-04-21 03:42:46

+0

禁用提交按鈕是實現您的目標的一種方式,但請記住,如果您添加其他提交小部件(例如提交按鈕或圖像或文本字段),那麼表單仍然可以提交,即使它不應該是!根據我的回答考慮陷入表單提交操作。 – maerics 2011-04-21 05:01:59

3

您需要防止表單被提交; jQuery documentation for "submit()"在這裏很有幫助。假設你有(也可以根據您的AJAX調用的結果集或標誌)來檢查,如果用戶名存在的方法:

<form name="form" method="post" action="" /> 
... 
<script> 
    $("form").submit(function() { 
    // Return false if the form should NOT be submitted. 
    return !usernameExists(selectedUsername); 
    }); 
</script> 

或者將它融入你的代碼示例從其它問題:

$('form').submit(function() { 
    return data!='no'; 
}); 
if(data=="no"){ 
    $(this).html("This username already exists"); 
    //... 
+0

謝謝,我採取了坎貝爾的解決方案。 – Michael 2011-04-21 03:44:54