17

jQueryを使用してフォーム変数を送信していますが、フォームが通常の方法で送信されないようにしようとしています(送信ボタンをクリックするか、フィールドの1つでEnterキーを押します)

私はこれを持っています:

$('#form').submit(function(){
    event.preventDefault();
});

しかし、それはうまくいかないようです。私のフォームはまだ送信中で、process.phpページに移動しています。

4

6 に答える 6

18

デフォルトのアクションを防ぐことだけが必要な場合はfalse、関数の代わりに次のように指定できます。

$('#form').submit(false);
于 2013-02-24T11:10:50.727 に答える
8

return false関数の代わりに試すか、パラメーターとしてevent.preventDefault()受け入れてください。event

$('#form').submit(function(event){
  event.preventDefault();
});

一部の人々がこれがもはや機能しないと考える理由はわかりませんが、これはまだ機能していることを示す例です。

https://jsfiddle.net/138z5atq/

イベントハンドラーをコメントアウトすると、アラートが表示されます。

に関してstopPropagation()stopImmediatePropagation()彼らはフォームの提出をまったく妨げません。それらは、イベントがdomを泡立たせるのを防ぐだけです。

于 2013-02-24T11:08:10.150 に答える
7

他の方法は次のとおりです。

$('#form').submit(function(){

   //some code here

   return false;
});
于 2014-02-26T23:56:13.203 に答える
4

投稿された回答を機能させることができず、falseを指定するだけでは選択肢がありませんでした。私はこれが機能することを発見しました:

$(document).on('submit', '#form', function(event){
    event.preventDefault();
});
于 2018-12-03T16:10:33.413 に答える
1

また、(少なくともChromeでは)Promiseまたは次のような非同期関数の後にe.preventDefault()を実行すると、次のようになります。

submitEvent(e) {

    this.sendData(formData).then((json) => {
        ...
    })
    .catch((error) => {
        ...
    });

    e.preventDefault(); // OPS. Executed but not working ????!!!
}

この以前は機能しません。理想的には、次のような他のコードの前に宣言する必要があります。

submitEvent(e) {

    e.preventDefault(); // WORKING !! :-)

    this.sendData(formData).then((json) => {
        ...
    })
    .catch((error) => {
        ...
    });
}
于 2020-09-27T19:10:59.293 に答える
1

steveukxの答えを拡張するために、私は通常、次のようなことをするのが好きです。

$('#form').submit(function(event){

    // The method's values go here

    event.preventDefault();

}, false); // This is a boolean (It converts all the values contained in the callback to a boolean value)
于 2021-03-19T16:35:59.850 に答える