2011-08-01 77 views
1

嗨我試着檢查一個表單中的標題是否已經存在於數據庫中。

我的代碼執行$ .post並取回數據,但不會停止使用e.preventDefault();或者返回false。 e.preventDefault();當標題爲空時工作。

$(document).ready(function() { 
     $('input[id$=btnSubmit]').click(function(e) { 
       var title = $("#title").val(); 
       if (!title) { 
        alert('Please Add a title'); 
        return false ; 
        e.preventDefault(); 
       } else { 
        $.post("http://xendesktop.nl/uploader/checktitle.php",{ title:$(this).val() } ,function(data) { 
         if(data=='exists') { 
          alert('This title already exists'); 
          e.preventDefault(); 
         } 
        }); 
       } 
       var description = $("#description").val(); 
       if (!description) { 
        alert('Please Add a description'); 
        return false ; 
        e.preventDefault(); 
       } 

回答

0

return false;等同於BOTH防止冒泡並防止默認值。

既不應該在AJAX回調 - 該函數被調用的點擊回調之外。

1

$.post請求異步發生,所以按鈕的默認動作並沒有被阻止,直到服務器發回它的響應(這不會在時間上發生) - 或者說,執行流過了那個點,其餘的處理程序被執行,導致表單提交。

+0

那麼如何防止呢? – xendesktop

+0

我會在處理程序開始時阻止默認值,並且只有當我們有條件時才手動觸發提交,例如'$(this).closest(「form」)。submit()'。這將需要一點重構,但最終會得到一個更簡潔,更簡潔的解決方案。 – karim79