1

フォームを非同期で送信しています。したがって、ページをリロードしたくないためpreventDefault、ハンドラーに呼び出しを配置し​​ましたが、送信時にページをリロードします。他のトピックを読む限り、これでページのリロードを無効にするのに十分だったはずですが、明らかに何かが欠けています。

$( "#loginForm" ).submit( function( event ) {

    try {
        event.preventDefault();
        // Some async handling
    } catch( ex ) {
        alert( ex );
    }
    return false;

} );

誰かが私のアプローチの問題を指摘できますか? QtWebkitすべてがコントロール内で起こっています。

編集:

今も試しました:

$( "#submitButton" ).on( "click", function( event ) {
    try {
        // Some async handling
    } catch( ex ) {
        alert( ex );
    }
    return false;
} );

異なる結果はありません。

4

4 に答える 4

0

ちなみに、ASP.NET Web フォームですか? フォーム ID は異なります。#loginForm

e.preventDefaultMatthias のコードのように、最初に何らかの処理を行ってから を呼び出します。その逆ではありません。

また、'return false;' の違いも参照してください。および 'e.preventDefault()

于 2013-07-01T15:47:14.760 に答える
0

loginForm submit イベントがキャッチされているかどうかを確認してください。

$( "#loginForm" ).submit( function( event ) {
    alert('submit event fired');
});

発火している場合は、これを試してください:

$( "#loginForm" ).submit( function( event ) {
    event.preventDefault();
    try {
        //do something in here
        // Some async handling
    } catch( ex ) {
        alert( ex );
    }
    return false;
});
于 2013-07-01T15:48:22.027 に答える
0

両方ともreturn false;意図event.preventDefault();したとおりに機能します。このFiddleを参照してください。イベント ハンドラに問題がある可能性があります。

$( "#loginForm" ).submit( function( event ) {
    try {
        // Some async handling
    } catch( ex ) {
        alert( ex );
    }

    event.preventDefault();  // or return false;
} );
于 2013-07-01T15:43:53.647 に答える
0

#loginForm が (送信入力ではなく) フォーム自体を参照している場合、それが問題です。イベントを送信入力自体に向けます。これが失敗した場合は、入力送信をボタンに変更すると、間違いなく機能するはずです。

編集:

入力送信ボタンを次のように変更します。

    <button id="submitButton">Submit</button>

このように、フォーム入力の送信ではないため、防止するデフォルトはありません。このボタンでページがリロードされることはありません。次に、クリックイベントを#submitButton

于 2013-07-01T15:50:40.240 に答える