2013-10-09 31 views
1

有一個註冊表單,我檢查用戶名是否可用。 如果可用,則將用戶名字段旁邊的文本顯示爲段落(「可用!」),如果不是則(「不可用!」)。 如果用戶名不可用,我不想提交。表單提交與jquery錯誤

<script type ="text/javascript"> 

$(function(){ 
    $('#usernameFeedback').load('check.php').show(); 

    $('#usernameID').keyup(function(){ 

     $.post('check.php',{username:registration.username.value}, 
     function(result){ 
      $('#usernameFeedback').html(result).show(); 
      var feedVar = $('#usernameFeedback').text(); 

     }); 
    }); 
}); 
</script> 


<script> 

$(document).ready(function(){ 
    $("#regForm").submit(function(){ 
    alert("HELLO"); // works fine 
    if ($('#usernameFeedback').text() == "Not available!") 
     return; 
    event.preventDefault(); 
    }); 
}); 

</script> 

有了這個代碼不能正常工作(我是新來的jQuery),在當前頁面不留,如果用戶名不可用..

回答

2

將事件傳遞給函數。

$("#regForm").submit(function(){ 

應該

$("#regForm").submit(function(event){ 

而且在同一行if使用return false,因爲你不使用{}

試試這個代碼:

$(document).ready(function() { 
    $("#regForm").submit(function (event) { 
     event.preventDefault(); 
     alert("HELLO"); // works fine 
     if ($('#usernameFeedback').text() == "Not available!") {return false;} 
    }); 
}); 
+1

+1快速&熟練地注意到'事件'=) – MackieeE

+1

感謝您的快速回答!完美的作品;) – cylon

1

if()聲明沒有大括號會只聽它下面的第一個和唯一的聲明。如果包括大括號,你可以有多個語句,象下面這樣:

if ($('#usernameFeedback').text() == "Not available!") { 
      event.preventDefault(); 
      return false; 
     } else { 
      return true; 
     } 

此外,event.preventDefault()永遠不會與你當前的代碼執行,爲的功能留給它甚至能夠執行之前,因此,我已經交換了這些,默認情況下,然後返回。

和塞爾吉奧快速正確地提到,加上event功能,甚至讓你event.preventdefault()在第一位!

+1

在一個注意,你也應該避免評估#userna的'.text()'內容meFeedback「,因爲它可以由用戶修改。相反,嘗試將服務器響應存儲在變量中,例如'var usernameAvailability'並根據服務器響應爲其分配值true或false。 表單提交之前,您可以評估此​​變量並確定提交是否應繼續進行。 – Terry