2015-05-15 59 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之外的任何内容都允许表单提交。