2017-08-25 15 views
0

私は問題に直面しています。 私は自分の入力フィールドを検証するためのコードを書いて、それをテストして正常に動作していました。次に、JqueryのAjax投稿を使用してフォームの送信を実装しました。今私の問題は、私が以前に実装したバリデーション機能が、送信ボタンをクリックしても呼び出されなくなったことです。検証なし。Ajaxの送信中にJavascriptフォームの検証が機能しない

同じ質問のStackOverflowに掲載さが、その私の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 = "返されたvalidd()"は

フィールドは検証関数 – Inderjeet

+0

なぜあなたはsubmit関数でvalidを呼び出しているだけではありませんか? –

答えて

2

フォームにイベントリスナーに追加しています。フォームからのonSubmitイベントリスナーを削除し、機能validdがfalseを返した場合それは、AJAX呼び出しを防ぐことができます

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

としてjQueryの内部validd関数を呼び出します。私はあなたの検証関数を呼び出して見ることができません

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

ありがとうございました。 – Inderjeet

関連する問題