2013-11-10 63 views
0

有人能告诉我我的jQuery验证有什么问题吗?这不是验证我的表单,而是忽略导致不检查输入的代码。绕过jQuery表单验证

形式:

<form class="form" accept-charset="UTF-8" action="URL-to-complete-form" method="POST" onsubmit="return validateForm();"> 
<input class="form-name" type="text" placeholder="Name"></div> 
<input class="form-email" type="text"placeholder="Email"></div> 
<input style="background-color: #fc8f12;" type="submit" value="Subscribe"> 
</div> 
</form> 

的Javascript:

function validateForm() 
{ 
    // Validate Name 
    var title = $(".form-name").val(); 
    if (title=="" ||title=="Name" || title==null) { } else { 
     alert("Please enter a name!"); 
    } 

    // Validate Email 
    var email = $(".form-email").val(); 
    if ((/(.+)@(.+){2,}\.(.+){2,}/.test(email)) || email=="" || email=="Email" || email==null) { } else { 
     alert("Please enter a valid email"); 
    } 
    return false; 
} 

谢谢大家的时间和帮助。

+0

您是否检查过浏览器的控制台是否有任何错误? –

+0

肯定有一个错误,你的JavaScript是让表单提交..检查你的控制台,并解决错误.. –

+0

你的函数总是返回false – rybo111

回答

0

对我来说,看起来你并没有做任何事情来阻止表单被提交,因为你在表单中有“action =”行......你在提交时告诉它,两个都运行javascript函数并提交表单。验证后,您应该让JavaScript提交表单。有很多方法可以做到这一点......可能最简单的方法是使提交按钮成为类型按钮而不是类型提交,然后将验证和提交绑定到该按钮的点击。

0

由于您正在“插入”提交回传以进行验证,请将您的代码清除,从表单中移除提交按钮,根据按钮单击进行验证并使用有效的自定义回传进行验证数据:

<form class="form" accept-charset="UTF-8" method="POST" action="#"> 
     <input class="form-name" type="text" placeholder="Name"></div> 
     <input class="form-email" type="text" placeholder="Email"></div> 
     </div> 
    </form> 
    <button>Subscribe</button> 

$(function() { 
      $('button').on('click', function (event) { 
       validateForm(); 
      }); 

     }); 

     function validateForm() { 
      // Validate Name 
      var title = $(".form-name").val(); 
      if (!title) { 
       alert("Please enter a name!"); 
       return false; 
      } 

      // Validate Email 
      var email = $(".form-email").val(); 
      if (!email) { 
       alert("Please an email address"); 
       return false; 
      } 

      if (!/(.+)@(.+){2,}\.(.+){2,}/.test(email)) { 
       alert("Please enter a valid email"); 
       return false; 
      } 

      $.post('URL-to-complete-form', $("form").serialize(), function (data) { 
       console.log('server call complete'); 
       console.log(data); 
      }); 

     } 

这里是一个工作的jsfiddle太:http://jsfiddle.net/t8vQ2/

0

HTML:

<form id="form1" ... 

的jQuery:

$("#form1").on("submit", function(){ 
    if($("input[name=firstName]").val() == ""){ 
    // errors here 
    return false; 
    } 
});