0

ASP.NET MVC アプリケーションを作成しています。デフォルトでは、クライアント ブラウザーに Javascript がある場合、ページ上のすべてのフォームのハンドラーは、Javascript によって、送信を Ajax "パイプ" (プログレッシブ エンハンスメント) に送信するハンドラーに設定されます。

しかし、1 つのフォーム (複数のページ) では、このハンドラーをバイパス/無視したいと思います。これを行う簡単な方法はありますか?おそらく、独自の onsubmit イベントを DOM で直接指定してハンドラーをオーバーライドするか、または他の方法で?

jQuery を使用しているため、これらのライブラリを利用できます。

4

2 に答える 2

1

私はおそらく、標準に違反するフォーム(AJAXの動作をすべきではないもの)にいくつかの特徴的な属性を割り当てることでこれを解決するでしょう- class="oldschool". JavaScript コードでは、フォームに送信イベント ハンドラーを接続するときに、次の特別なマークが付いたフォームを必ず除外します。

$('form:not(.oldschool)').submit(function() {
    // Do fancy AJAX stuff
});

更新:外部の JavaScript ファイルを変更せず、HTML マークアップを変更するだけで新しい動作を導入するには、次のようなことを検討してください

<form ... onsubmit="if (typeof $ == 'function') $(this).unbind('submit');">

それは美しいものではありませんが、少なくとも私がここで利用できるブラウザでは、仕事を成し遂げているようです.

于 2010-03-19T07:56:16.553 に答える
1

「DOM から」の意味がよくわかりませんが、元の ajax/js コードを変更することはできないと思いますがscript、ajax を設定するコードの後に​​実行される小さなタグをどこかに挿入できるはずです。サブミットハンドラ。

さらに、ハンドラーセットがフォームまたは類似のものであると仮定すると、$("form").submit(...) これを使用できます

$('selectorForYourForm').unbind('submit');

これは元の js コードの後に​​実行されるため、このフォームの送信アクション用に設定された元のコードのハンドラーをアンバインドします。

于 2010-03-19T08:20:23.573 に答える