119

送信時に、フォームを送信する前に追加の処理を行う必要があるフォームがあります。デフォルトのフォーム送信動作を防止してから、追加の処理 (基本的には Google Maps API を呼び出し、フォームにいくつかの非表示フィールドを追加する) を行うことができます。その後、フォームを送信する必要があります。

「デフォルトを防止」し、後で「デフォルトを継続」する方法はありますか?

4

10 に答える 10

68

使用するjQuery.one()

要素のイベントにハンドラーをアタッチします。ハンドラは、イベント タイプごとに要素ごとに最大 1 回実行されます

$('form').one('submit', function(e) {
    e.preventDefault();
    // do your things ...

    // and when you done:
    $(this).submit();
});

このカスタムイベントは最初の送信後に切り離さoneれるため、無限ループも防止します。submit

于 2017-01-03T10:04:54.693 に答える
56

イベントをフォームにバインドし、.submit()返す前にやりたいことを行う (true) 場合、これらのことは実際の送信の前に発生します。

例えば:

$('form').submit(function(){
    alert('I do something before the actual submission');
    return true;
});

簡単な例

jquery.com の別の例: http://api.jquery.com/submit/#entry-examples

于 2013-01-17T08:57:20.327 に答える
30

私はただやります:

 $('#submiteButtonID').click(function(e){
     e.preventDefault();
     //do your stuff.
     $('#formId').submit();
 });

フォームを送信するだけの場合は、preventDefault最初に呼び出し て後で関数を使用しますsubmit()

于 2013-01-17T08:49:18.187 に答える
19

この方法を使用して、JS で無限ループを実行します。より良い方法を行うには、次を使用できます

var on_submit_function = function(evt){
    evt.preventDefault(); //The form wouln't be submitted Yet.
    (...yourcode...)

    $(this).off('submit', on_submit_function); //It will remove this handle and will submit the form again if it's all ok.
    $(this).submit();
}

$('form').on('submit', on_submit_function); //Registering on submit.

それが役立つことを願っています!ありがとう!

于 2015-02-09T18:10:16.457 に答える
1

e.preventDefault()現在の操作を停止する which を使用できます。

あなたができるよりも$("#form").submit();

 $('#form').submit(function (e)
{
    return !!e.submit;
});
if(blabla...)
{...
}
else
{
    $('#form').submit(
    {
        submit: true
    });
}
于 2013-01-17T08:49:27.300 に答える