-1

ajaxFormオンザフライで作成したフォームで使用しようとしています。実際、私のアプリケーションは「オンザフライ」でリンクを生成し、そのリンクをクリックするとajaxForm(これもまた jQuery によってオンザフライで!) が生成されるので、この.live()関数を で使用しましたajaxForm()。これは私の間違ったコードです:

$('form').live('submit', function() {
    $(this).ajaxForm({dataType: 'html', success: function(data) {
        alert(data);
    }});
    return false; // For preventing page refresh!
});

私のフォームでは、送信ボタンをクリックすると、ページが更新されます。

解決策はありますか?

4

4 に答える 4

0

event.stopPropagation(); を使用してみてください。これは JQuery 関数です。

そのためには、イベント オブジェクトをパラメーターとしてハンドラーに渡す必要があります。

$('form').live('submit', function(event){

の代わりにこの行を使用しますreturn false;

event.stopPropagation();
于 2011-09-10T20:10:04.543 に答える
0

他の人が言ったように、あなたreturn falseは働くべきです。

だから、何かが間違っています。jQuery が適切にロードされ、on-submit ハンドラーがデバッグ コードを配置して実際に実行されることを確認します。

また、デバッグを実行できるように、Firebug がインストールされ、有効になっていること (またはブラウザーで同等のもの) を確認してください。

于 2011-09-10T20:40:12.977 に答える
0

return false機能するはずですが、どちらかを実行するか、event.preventDefault()両方event.stopPropagation()を実行する必要がない場合に実行することをお勧めします。この場合event.preventDefault()、フォームを送信するデフォルトのアクションを停止したいためです。しかし、私が言ったようreturn false;に、あなたのケースではうまくいくはずだったので、使用しているプラ​​グインで何らかのエラーが発生している可能性があると思います. もし私があなただったら、プラグインのドキュメントをもう一度見て オプションが正しいことを確認します。すぐ後ろに が表示され、ドキュメントに記載されているdataType: 'html'ものしかあり'xml', 'script', or 'json'ません...プラグインの使用法をもう一度確認することをお勧めします。

于 2011-09-10T20:27:57.597 に答える
-1

preventDefault「return false」の代わりに呼び出す必要がある場合があります。jQuery liveAJAX と組み合わせた with formのユース ケースの疑似コードは次のとおりです。

    //Override form submit
    $("form").live("submit", function (event) {
        event.preventDefault();
        var form = $(this);
        $.ajax({
            url: form.attr('action'), // Get the action URL to send AJAX to
            type: "POST",
            data: form.serialize(), // get all form variables
            success: function(result){
                // ... do your AJAX post result
            }
        });
    });

また、ajaxForm (私は ajaxForm を使用していないため) を使用する必要があるかどうかもわかりませんjQuery.live。ドキュメントから推測すると、まったく必要ないかもしれません。

于 2011-09-10T20:24:25.560 に答える