2016-05-23 73 views
0

我使用jquery验证窗体。所以当表格提交后我使用event.preventDefault();验证表格后,表格会提交给相应的操作页面。但在我的情况下它不起作用。如何提交表单,如果使用jQuery进行验证?

代码我did-

$('form[name=contact_form]').submit(function(event) { 
     event.preventDefault(); 
     var formData = $('form[name=contact_form]').serialize(); 
     var phone = $.trim($('form[name=contact_form]').find('input[name=PHONE]').val()).length; 
     var intRegex = /[0-9 -()+]+$/; 
     var alert = $('#contact_alert'); 
     var success = $('#contact_success'); 
     if(phone==0){ 
      phone.focus(); 
      alert.html("<p class='alert alert-danger' style='text-align:left;'>Phone number is required</p>"); 
     } 
     else if((phone < 10)){ 
      phone.focus(); 
      alert.html("<p class='alert alert-danger' style='text-align:left;'>Please enter a valid phone number</p>"); 
      return false; 
     }else{ 
      return true; 
     } 
    }); 

HTML页面:

<?php 
echo form_open_multipart('home/inquiry', array('name' => 'contact_form')); 
?> 
       <div class="row"> 
        <div class="col-md-6"> 
         <div class="form-group"> 
          <input type="hidden" name="form_type" value="C"> 
          <input type="text" name="NAME" id="user-name" class="form-control" placeholder="Full Name"/> 
         </div> 
        </div> 
        <div class="col-md-6"> 
         <div class="form-group"> 
          <input type="text" name="PHONE" id="user-phone" class="form-control" placeholder="Phone"/> 
         </div> 
        </div> 
        <div class="col-md-6"> 
         <div class="form-group"> 
          <input type="text" name="EMAIL" id="user-email" class="form-control" placeholder="Email"/> 
         </div> 
        </div> 
        <div class="col-md-6"> 
         <div class="form-group"> 
          <input type="text" name="SUBJECT" id="user-subject" class="form-control" placeholder="Reason for inquiry"/> 
         </div> 
        </div> 
        <div class="col-md-12"> 
         <textarea class="form-control" name="MESSAGE" id="user-message" placeholder="Message"></textarea> 
        </div> 
        <div class="col-md-12 text-left"> 
         <div class="form-group"> 
          <input type="submit" name="submit" class="btn btn-warning"> 
         </div> 
        </div> 
       </div> 
       <?php echo form_close(); ?> 

回答

3

别叫event.preventDefault();如果你想验证确定后提交表单。

验证失败后返回false就足够了。

+0

如果我不叫'event.preventDefault();'那么这个功能'$('形式[名= contact_form]')。submit(函数(事件)'不是调用表单直接提交.. –

+2

它看起来应该在'if(phone == 0)'部分也有'return false',你返回'false '当电话短于10个字符时,但不是当长度等于0时。 – ahwayakchih

0
$(this).submit(); 

当它是有效的。

0

尝试更换return true;$(this).submit();

0

我平时做这样的事情

$("#submit").submit(function(e){ 
    if(validateFields() == true){ //If all fields are valid 
     $("#submit").submit(); 
    } 
    else{ 
     e.preventDefault(e); 
    }  
}); 
相关问题