2015-05-15 30 views
0

我一直在撞牆,試圖弄清楚我在這裏做錯了什麼(表單提交/未驗證)。我不是專家,所以我希望有人聰明一點比我就能迅速趕上我做錯了什麼:表單未驗證

<script> 
    function validateForm(){ 

     var first = $('#first_name').val(); 
     if(first==null || first==''){ 
      if ($('span:contains("Enter a valid first name")').length==0){ 
       $(this).closest('div').addClass('has-error'); 
       $(this).after('<span class="error" style="color:red;font-size:14px;">Enter a valid first name</span>'); 
      } 
      return false; 
     } 

     var last = $('#last_name').val(); 
     if(last==null || last==''){ 

      if ($('span:contains("Enter a valid last name")').length==0){ 
       $(this).closest('div').addClass('has-error'); 
       $(this).after('<span class="error" style="color:red;font-size:14px;">Enter a valid last name</span>'); 
      } 
      return false; 
     } 

     return false; 
    } 

    </script> 

的HTML:

<form id="myid" method="POST" onsubmit="return validateForm()"> 

....a form... 

</form> 

我m使用類似的語法來驗證.focusout()上的表單輸入,並且它工作正常。

+0

功能始終返回false。 – Barmar

+0

看起來你使用的是jQuery,有沒有理由不使用類似''('#myid')。submit(function({}));'也想知道,你是否嘗試過使用'console .log()'來調試,因爲這個函數很可能被調用,只是沒有做你期望的功能。 – sirmdawg

+0

該函數在發現驗證錯誤時返回false,然後在最後返回false。最後一個不應該是「真實的」嗎? – Barmar

回答

1

假設你想,如果沒有錯誤的形式正常行爲,你應該有函數返回true:

function validateForm(){ 

    var first = $('#first_name').val(); 
    if(first==null || first==''){ 
     if ($('span:contains("Enter a valid first name")').length==0){ 
      $(this).closest('div').addClass('has-error'); 
      $(this).after('<span class="error" style="color:red;font-size:14px;">Enter a valid first name</span>'); 
     } 
     return false; 
    } 

    var last = $('#last_name').val(); 
    if(last==null || last==''){ 

     if ($('span:contains("Enter a valid last name")').length==0){ 
      $(this).closest('div').addClass('has-error'); 
      $(this).after('<span class="error" style="color:red;font-size:14px;">Enter a valid last name</span>'); 
     } 
     return false; 
    } 

    return true; // everything went okay ! 
} 
1

最後

return false; 

應該

return true; 

你到達那裏時,再也沒有出現過任何驗證錯誤。返回false告訴瀏覽器不要提交表單,您需要返回其他內容。您也可以完全刪除該行,因爲除false之外的任何內容都允許表單提交。