2016-04-30 9 views
0

私はなぜjquery validationが私のフォームが提出されるのを止めないのか理解しようとしていますか?送信ボタンを押すと、フォームは正しくポストされますが、入力フィールドが空白のままであっても、検証エラー(このフィールドは必須)は無視されるようです。フォームが送信され、検証が無視されるのはなぜですか?

フォーム

$(document).ready(function() { 
 
    $("#message").hide(); 
 

 
    //Define your validation rules. 
 
    $(function() { 
 
    $("#myform").validate({ 
 

 
    }); 
 
    $("#submitButtonId").on("click", function(e) { 
 
     var formdata = $("#myform").serialize(); 
 
     //Post form data 
 
     $.post('php_includes/simple_insert.php', formdata, function(data) { 
 
     //Process post response 
 
     $("#message").html(data); 
 
     $("#message").fadeIn(500); 
 
     $("#message").fadeOut(500); 
 
     }); 
 

 
     //Reset Form 
 
     $('#myform')[0].reset(); 
 
    }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 

 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.0/jquery.validate.min.js"></script> 
 

 
<form class="form-inline" action="" id="myform" method="post"> 
 

 
    <!-- Text input--> 
 
    <div class="form-group"> 
 
    <label class="col-md-4 control-label" for="bill_cost"></label> 
 
    <div class="col-md-8"> 
 
     <input id="bill_cost" name="bill_cost" type="text" placeholder="Bill Cost" class="form-control input-lg" required> 
 

 
    </div> 
 
    </div> 
 

 
    <!-- Button --> 
 
    <div class="form-group"> 
 
    <label class="col-md-4 control-label" for="submit1"></label> 
 
    <div class="col-md-4"> 
 
     <button type="submit" id="submitButtonId" name="submit1" class="btn btn-primary btn-xl">Submit</button> 
 
    </div> 
 
    </div> 
 
</form>

+0

「送信ボタンをクリックする」イベントは、「フォームを送信する」イベントの前に発生し、検証コードを持つ「フォームを送信する」イベントです。 「送信ボタンをクリックしてください」というイベントで 'post'リクエストを送信しているので、それ以前の検証には到達していません。 –

答えて

3

有効なフォームの他の事をするsubmitHandlerを使用し、これを試してみてください:

$("#myform").validate({ 
     submitHandler : function() { 
      var formdata = $("#myform").serialize(); 
      //Post form data 
      $.post('php_includes/simple_insert.php', formdata, function(data){ 
      //Process post response 
      $("#message").html(data); 
      $("#message").fadeIn(500); 
      $("#message").fadeOut(500); 
      }); 

      //Reset Form 
      $('#myform')[0].reset(); 

      } 
     }); 
+0

よろしくお願いします。 –

+0

これはOPのコードがうまくいかない理由を説明していません;) –

+0

検証があってもフォームが有効かどうかチェックしていないので、ボタンajaxが実行されるだけなので、submitHandlerを使用すると、有効であればajaxリクエストを送信します。 –

-1

法案コストのテキストで必要タグを削除チェックボックスは無視されます。

関連する問題