15

.NET WindowsフォームWebBrowserコントロールを使用してページのプレビューを表示し、このSO投稿で説明されている次のアプローチを使用して、ページ上のすべてのリンクを無効にします。

$(function() {
    $('a').click(function() {
        $(this).attr('href', 'javascript:void(0);');
    });
});

プレビューとして表示したいHTMLページにもHTMLフォームが含まれているため、すべてのフォーム送信機能を無効にする同様のアプローチを探しています。

私はもう試した:

$(function() {
    $('form').attr('onsubmit', 'return false');
});

しかし、次のようなフォームでは、これは機能しないようです(「ページをロードします」を読んでください)。

<form id="myform" name="myform" onsubmit="return search()" action="">

私がページに持っているもの。

だから私の質問は:

GETフォームかPOSTフォームかに関係なく、HTMLページのすべてのフォーム送信機能を無効にする最良の方法は何ですか?

4

8 に答える 8

34

次のことができるはずです。

$('form').submit(false);

jQueryのドキュメントから:

jQuery 1.4.3では、イベントハンドラーの代わりにfalseを渡すことができるようになりました。これにより、次と同等のイベントハンドラーがバインドされます。function(){return false; }。この関数は、.unbind(eventName、false)を呼び出すことで後で削除できます。

于 2012-04-23T15:45:01.837 に答える
3

jqueryを使用して私はこれを行います

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

jquery では、通常は.attr(...)イベント リスナーをバインドするために使用しない代わりに、ヘルパー メソッドを使用する必要があります。.bind(...)

ここにその完全なリファレンスがあります: jQuery events

于 2012-04-23T15:46:50.030 に答える
3

次に、..の組み合わせを使用できます。

$('form :submit').attr("disabled", "disabled");

$('form').unbind('submit');
于 2012-04-23T15:49:21.740 に答える
3

送信ボタンを無効にすることができます

$('form :submit').attr("disabled", "disabled");

または、送信イベントを何も行わないようにするだけです

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

それは、正確に何を達成しようとしているかによって異なります。

于 2012-04-23T15:52:43.753 に答える
2

フォームの送信のみを防止したい場合:

<form>何かをどこにでも送信しないようにする最善の方法は、次のとおりだと思います。

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

これにより、ページ上のすべてのフォームが無効になります。フォームごとに個別に行う必要はありません。

JSFiddle デモンストレーション フォームの送信を有効/無効にします。

http://jsfiddle.net/cDLsw/6/

于 2012-04-23T16:06:41.467 に答える
1

イベント委任を使用して、本文内のすべてのフォームが送信されないようにします。

$("body").on("submit", "form", function( event ){
    event.preventDefault();
});

ところで、ページ上のすべてのリンクを無効にする Javascript コードは、適切な方法ではありません。代わりに次のようなものを使用できます

// use "bind" instead of "on" if you use a jQuery version prior to 1.7
$("a").on( "click", function( ev ) {
    ev.preventDefault();
});

// or use event delegation
$("body").on( "click", "a", function( ev ) {
    ev.preventDefault();
});

// the power of event delegation in action:
// disable BOTH links and form with one event handler
$("body").on( "click", "a, form", function( ev ) {
    ev.preventDefault();
});

ここに動作するデモがありますhttp://jsfiddle.net/pomeh/TUGAa/

于 2012-04-23T15:50:09.073 に答える