3

ダブルクリックを防ぎ、実際に適切にクリックされたことを明確にするために、クリックされたときにフォームに JQuery UI 送信ボタンがあります

だから私はjQueryを使ってこれを行います:

$('input:submit').click(function() {
    $(this).button('disable');
});

動作しますが、問題は、ユーザーが戻るボタンを押したときに無効のままになることです。クリックしたときに送信ボタンを無効にする適切な方法は何ですか? 私は明らかに jQuery を使用しているので、好みは jQuery を使用することです。

更新:多くの人が$(document).ready(function() {$('input:submit').button('enable');});、この永続的なボタンの無効化を克服するために使用することを提案しました。ボタンの初期化呼び出しの前に来ると、うまくいかないことがわかりました$(function() {}$(function() {})しかし、セクション内であっても、ボタンの初期化コードの後に​​そのボタン('enable') を配置すると

しかし今、このボタン全体を無効にする機能は Firefox でしか機能しないことに気付きました! ボタンを無効にすると、IE と Chrome でフォームが送信されません (他はテストしていません)。

更新 2 : 一部のブラウザーがこれらの回避策を使用して送信できないことを少し心配していましたが、ようやくこれが機能するようになりました...これが私の最終的なコードです。潜在的な問題の意見を聞きたいです:

$(function() {
    $('input:submit').button().click(function() {
        $(this).button('disable');
        $(this).closest('form').submit();
        return false;
    });
    $('input:submit').button('enable');
});
4

5 に答える 5

2
$(document).ready(function(){
 $("input:submit").attr("disabled", "");
})
于 2010-12-09T20:03:30.910 に答える
0

ええと、ブラウザはフォームの状態を履歴に保存するのが最善であるため、無効のままです。したがって、loadイベントにアタッチして、disabled属性を削除することをお勧めします。

于 2010-12-09T20:03:40.900 に答える
0

buttonjQueryAPIドキュメントにメソッドへの参照が見つかりません。ある種のモジュールを使用していますか?

もう一度押すと、フォームが初期状態にリセットされるはずなので、buttonメソッドで何らかのセッションマジックが発生しているに違いないと思います。代わりに次を試してください。

$('input:submit').click(function() {
    $(this).attr('disabled', 'disabled');
});
于 2010-12-09T20:04:41.430 に答える
0

これをページに追加します。

$(document).ready(function() {
  $('input:submit').button({ disabled: false});
});
于 2010-12-09T20:02:15.747 に答える
0

他の人が述べたように、フォームは戻るボタンをクリックしたときに状態 (の一部) を保持するため、ページが読み込まれたときに送信ボタンを有効にする必要があります (これは、誰かが戻るボタンをクリックしたときにも発生します)。

これをページに追加します。

$(document).ready(function(){
  $("input:submit").button("enable");
});

このソリューションでは、使用したメソッドの逆であるjQuery UI メソッドを使用することに注意してください。button.enable()button.disable()

于 2010-12-09T20:12:49.153 に答える