1

この質問 は尋ねられましたが、答えは確認されていません。試してみましたが、うまくいきませんでした。そこで、もう一度同じ質問をしたいのですが(適切ですか?そうでない場合は、どうすればよいか教えてください)。

検証してからajaxFormで送信する必要があるフォームがあります(フォームには画像とファイルデータが含まれているため、送信は機能し.serialize()ません)。詳細は次のとおりです。

HTML:

<form id="myForm" action="..." method="post" enctype="multipart/form-data">
  ...
  <input type="file" name="image" /><br />
  <input type="file" name="file" /><br />
  ...
</form>

jQuery:

$(document).ready(function() {

  $("#myForm").ajaxForm ({

    beforeSubmit: function() {
      $("#myForm").validate({
        onkeyup:false,
        rules: {
          ...
        },
        messages: {
          ...
        },
      });
    },

    success: function(returnData) {
      $('#content').html(returnData);
    }

  });

});

パーツはajaxFormOKです。ただし、フォームは検証なしで送信されるだけです。

4

3 に答える 3

6

.validate()DOM readyでプラグインを初期化するために使用されるため、それを他の関数の外に引き出します。

DOM 対応の 2 つのプラグインを初期化し、適切な組み込みのコールバック関数を利用します...

両方のプラグインがすでにイベントを自動的にキャプチャしているため、新しいsubmitハンドラーまたはハンドラー関数の作成について心配する必要はありません。clicksubmit

動作デモ: http://jsfiddle.net/MF26D/

コードを次のように再配置します。

$(document).ready(function () {

    $("#myForm").validate({ // initialize the plugin
        // any other options,
        onkeyup: false,
        rules: {
            //...
        },
        messages: {
            //...
        }
    });

    $("#myForm").ajaxForm({ // initialize the plugin
        // any other options,
        beforeSubmit: function () {
            return $("#myForm").valid(); // TRUE when form is valid, FALSE will cancel submit
        },
        success: function (returnData) {
            $('#content').html(returnData);
        }
    });

});
于 2013-03-10T16:21:43.363 に答える
1

これを試して

   $(document).ready(function() {

      $("#myForm").ajaxForm ({

        beforeSubmit: function() {
           if (!$("#myform").valid())
                    return;
        },

        success: function(returnData) {
          $('#content').html(returnData);
        }

      });

    });
于 2013-03-10T12:41:22.330 に答える
1

送信ハンドラー内でフォーム プラグインを呼び出すことができます。

$("#myForm").submit(function(e){
  e.preventaDefault();

   var isValid=/* run your validation code that determines true or false*/

   if( isValid){
     $(this).ajaxForm({/* plugin options*/})
  }

})
于 2013-03-10T12:41:30.303 に答える