2017-08-25 97 views
0

我正面临一个问题。 我已经编写了用于验证我的输入字段的代码,并对其进行了测试,结果工作正常。然后我实现了使用Jquery Ajax post进行表单提交。现在我的问题是,当我点击提交按钮时,我以前实现的验证功能不再被调用。没有验证。在Ajax提交期间Javascript表单验证失效

同样的问题张贴在计算器,但它没有解决我problam 问题

$('#submit').click(function (e){ 
    e.preventDefault(); 
    if(!$("form").valid()) return; 

    ... 
}); 

的一些一个答案,我不知道如何使用上面的代码

HTML

<div class='well'> 
    <form action="" method="post" class="contactf" name="contactform" onsubmit="return validd()"> 
    <div class='row'> 
     <div class='col-sm-4'> 
     <div class='form-group'> 
      <label for='fname'>Name</label> 
      <input type='text' name='namee' class='form-control' /> 
     </div> 
     <div class='form-group'> 
      <label for='number'>Number</label> 
      <input type='number' name='numberr' class='form-control' /> 
     </div> 
     <div class='form-group'> 
      <label for='email'>Email</label> 
      <input type='email' name='emaill' class='form-control' /> 
     </div> 
     <div class='form-group'> 
      <label for='subject'>Subject</label> 
      <input type='text' name='subjectt' class='form-control' /> 
     </div> 
     </div> 
     <div class='col-sm-8'> 
     <div class='form-group'> 
      <label for='message'>Message</label> 
      <textarea class='form-control' name='messagee' rows='10'></textarea> 
     </div> 
     <div class='text-right'> 
      <input type='submit' name="contactsubmit" class='btn btn-primary' value='Submit' /> 
     </div> 
     </div> 
    </div> 
    </form> 
    <div class="thanks" style="display: none;"> 
    <h3>Thanks for Enquiry us..Our Team will contact you as soon as possible</h3> 
    </div> 
</div> 

J avascript代码和Ajax

function validd() { 
    var nam = document.contactform.namee.value; 
    var number = document.contactform.numberr.value; 
    var email = document.contactform.emaill.value; 
    var subject = document.contactform.subjectt.value; 
    var message = document.contactform.messagee.value; 

    if (nam == "") { 
    alert('Please Fill Your Name'); 
    document.contactform.namee.focus(); 
    return false; 
    } 

    if (number == "" || number == null) { 
    alert('Please Enter Your Number'); 
    document.contactform.numberr.focus(); 
    return false; 
    } 

    if (number.length < 9) { 
    alert('Please Enter Your Number at least 10 Digit'); 
    document.contactform.numberr.focus(); 
    return false; 
    } 


    if (email == "" || email == null) { 
    alert('Enteryour Email'); 
    document.contactform.emaill.focus(); 
    return false; 
    } 

    if (subject == "" || subject == null) { 
    alert('Please Fill Your Subject'); 
    document.contactform.subjectt.focus(); 
    return false; 
    } 

    if (message == "" || message == null) { 
    alert('Please Fill Your Message'); 
    document.contactform.messagee.focus(); 
    return false; 
    } else { 
    return true; 
    } 
} 
$(document).ready(function() { 
    $(function() { 
    $('.contactf').submit(function(e) { 
     e.preventDefault(); 

     var form = $(this); 
     var post_url = 'contact-enquiry.php'; 
     var post_data = form.serialize(); 
     $.ajax({ 
     type: 'POST', 
     url: post_url, 
     data: post_data, 
     success: function(msg) { 
      $(form).fadeOut(80, function() { 
      form.html(msg).fadeIn().delay(100); 
      $('.thanks').fadeIn(); 
      }); 

     } 


     }); 

    }); 

    }); 
}); 
+0

我不能见你打电话给你验证功能? –

+0

@kevinSpaceyIsKeyserSözeonsubmit =“return validd()”

字段验证函数 – Inderjeet

+0

为什么你不只是在你的提交函数中调用有效? –

回答

2

要添加到事件侦听器的形式。取下形式onsubmit事件监听器,并调用内部的jQuery的validd功能

$('.contactf').submit(function(e) { 
     e.preventDefault(); 
     if(!validd()) return false; 
     ^^^^^^^^^^^^ 

,将妨碍Ajax调用,如果函数validd返回false。

function validd() { 
 
    var nam = document.contactform.namee.value; 
 
    var number = document.contactform.numberr.value; 
 
    var email = document.contactform.emaill.value; 
 
    var subject = document.contactform.subjectt.value; 
 
    var message = document.contactform.messagee.value; 
 

 
    if (nam == "") { 
 
    alert('Please Fill Your Name'); 
 
    document.contactform.namee.focus(); 
 
    return false; 
 
    } 
 

 
    if (number == "" || number == null) { 
 
    alert('Please Enter Your Number'); 
 
    document.contactform.numberr.focus(); 
 
    return false; 
 
    } 
 

 
    if (number.length < 9) { 
 
    alert('Please Enter Your Number at least 10 Digit'); 
 
    document.contactform.numberr.focus(); 
 
    return false; 
 
    } 
 

 

 
    if (email == "" || email == null) { 
 
    alert('Enteryour Email'); 
 
    document.contactform.emaill.focus(); 
 
    return false; 
 
    } 
 

 
    if (subject == "" || subject == null) { 
 
    alert('Please Fill Your Subject'); 
 
    document.contactform.subjectt.focus(); 
 
    return false; 
 
    } 
 

 
    if (message == "" || message == null) { 
 
    alert('Please Fill Your Message'); 
 
    document.contactform.messagee.focus(); 
 
    return false; 
 
    } else { 
 
    return true; 
 
    } 
 
} 
 
$(document).ready(function() { 
 
    $(function() { 
 
    $('.contactf').submit(function(e) { 
 
     e.preventDefault(); 
 
     if(!validd()) return false; 
 
     var form = $(this); 
 
     var post_url = 'contact-enquiry.php'; 
 
     var post_data = form.serialize(); 
 
     $.ajax({ 
 
     type: 'POST', 
 
     url: post_url, 
 
     data: post_data, 
 
     success: function(msg) { 
 
      $(form).fadeOut(80, function() { 
 
      form.html(msg).fadeIn().delay(100); 
 
      $('.thanks').fadeIn(); 
 
      }); 
 

 
     } 
 

 

 
     }); 
 

 
    }); 
 

 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class='well'> 
 
    <form action="" method="post" class="contactf" name="contactform"> 
 
    <div class='row'> 
 
     <div class='col-sm-4'> 
 
     <div class='form-group'> 
 
      <label for='fname'>Name</label> 
 
      <input type='text' name='namee' class='form-control' /> 
 
     </div> 
 
     <div class='form-group'> 
 
      <label for='number'>Number</label> 
 
      <input type='number' name='numberr' class='form-control' /> 
 
     </div> 
 
     <div class='form-group'> 
 
      <label for='email'>Email</label> 
 
      <input type='email' name='emaill' class='form-control' /> 
 
     </div> 
 
     <div class='form-group'> 
 
      <label for='subject'>Subject</label> 
 
      <input type='text' name='subjectt' class='form-control' /> 
 
     </div> 
 
     </div> 
 
     <div class='col-sm-8'> 
 
     <div class='form-group'> 
 
      <label for='message'>Message</label> 
 
      <textarea class='form-control' name='messagee' rows='10'></textarea> 
 
     </div> 
 
     <div class='text-right'> 
 
      <input type='submit' name="contactsubmit" class='btn btn-primary' value='Submit' /> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    </form> 
 
    <div class="thanks" style="display: none;"> 
 
    <h3>Thanks for Enquiry us..Our Team will contact you as soon as possible</h3> 
 
    </div> 
 
</div>

+1

Thanks Man .. It works – Inderjeet