2

以下は Firefox で機能します。

$('input[type="submit"]').on('click', ->
  $(this).addClass('disabled').attr('disabled', 'disabled')
  $(this).val('Sending')
)

アイデアは、ダブルクリックを防ぐことです(上記には他の問題がありますが、この質問の主題ではありません)。ただし、Chrome では、フォームが送信されません。クリック イベントにより、既定のアクション (フォームの送信) が実行されなくなります。

最後に次のようなことができますform.submit()が、Firefox では 2 回送信されますか? 私はしなければならないと思いますe.preventDefault()...ここで簡単な解決策はありますか? 代わりに、フォーム送信イベントをリッスンする必要がありますか?

4

3 に答える 3

3

最もクリーンな方法は、

--> ボタンにイベントを添付

--> デフォルトのアクションを防止する

--> フォームを送信

これは両方のブラウザで動作するはずです。あなたは正しい道を進んでいます。

$('input[type="submit"]').on('click', function(e) {
  e.preventDefault();
  $(this).addClass('disabled').attr('disabled', 'disabled')
  $(this).val('Sending')
  form.submit()
});
于 2013-06-10T21:15:57.030 に答える
0

イベントハンドラーを設定し、デフォルトのアクションを保持する2つの方法(このフィドルを見てください)を知っています

1.- JavaScript を使用:

var btn = document.getElementById("btn1"); 

btn.addEventListener && btn.addEventListener("click", FunctionName, false) ||
btn.attachEvent && btn.attachEvent("onclick", FunctionName);

2.-jquery を使用:

$("#btn1").click(function(event){
    //do something
    if(!Valid)
    {
        //prevent default action()
        event.preventDefault();
    }
});  
于 2013-06-10T22:43:13.527 に答える