0

皆さん、1 つのプラグインに問題があります。このjquery フォーム検証を使用してフォームを検証していますが、データを送信するための AJAX 呼び出しがある場合、検証は無視されます。グローバル変数を設定し、AJAX呼び出しで制御ステートメントを作成して送信を停止しようとしましたが、それを行ったときに検証は機能しましたが、データを送信できません。

検証

var isValid = 0;
    $.validate({
        form : '#comment-form',
        onSuccess : function() {
          isValid = 1;
          return false; 
        },
        validateOnBlur : false,
        errorMessagePosition : 'top',
        scrollToTopOnError : false,
    });

AJAX 送信データ:

$(document).ready(function() {
  if (isValid == 1)
  {
  $("#submitComment").click(function (e) {
    e.preventDefault();
    var name = $("#nameTxt").val();
    var comment = $("#commentTxt").val(); //build a post data structure
    var article = $("#articleID").val();
    var isFill = $("#isFillTxt").val();

    jQuery.ajax({
      type: "POST", // Post / Get method
      url: "<?php echo site_url('articles/create_comment/'); ?>", //Where form data is sent on submission
      dataType:"text", // Data type, HTML, json etc.
      data: "body=" + comment + "&name=" + name + "&article_id=" + article + "&isFillCheck=" + isFill, //Form variables
      success:function(response){
        $("#responds").append(response);
        document.getElementById("commentTxt").value="";
        document.getElementById("nameTxt").value="";
      },
      error:function (xhr, ajaxOptions, thrownError){
        alert(thrownError);
      }
    });
  });
  }
});
4

3 に答える 3

0

ページの「#comment-form」の送信イベントに、検証スクリプトがサブスクライブされているようです。したがって、検証が完了した後にハンドラーを実行する方法は、送信イベントにもサブスクライブすることです。このような:

    $("#comment-form").submit(function(){
        if(!isValid) {
            Do your Ajax here...
        }
    });

また、ハンドラーで「e.preventDefault()」を呼び出す必要はありません。

于 2014-11-23T23:17:37.140 に答える