2

ダブルクリックを防ぐために、送信ボタンを1回だけクリックする必要があります。

誰かが投稿した1つの方法を次に示します。

    $(document).ready(function () { 
      $("#submit").one('click', function (event) 
      {   
         event.preventDefault(); 
         //do something 
         $(this).prop('disabled', true); 
      }); 
    }); 

1) 私の理解では、.one は 1 回だけトリガーされます。もしそうなら、クリックが一度だけ行われるので、 event.preventDefault() と $(this).prop('disabled', true) の必要性がわかりません。これ自体が修正になります。テストから、ダブルクリックした場合、それが 1 回だけ発生することに気付きました (preventdefault および無効化せずに試しました)。

2) .one が 1) で想定したことをしなかった場合、 $(this).prop('disabled', true); の部分を理解しています。ボタンを無効にしますが、event.preventDefault(); が必要な理由がよくわかりません。私の理解では、デフォルトのアクション、この場合は送信が妨げられます。これが本当なら、event.preventDefault(); は何が良いでしょうか。送信したいのですが、一度だけです。

3) .one だけでダブルクリックを防げませんか。私はこれで正しいですか?残りのロジックは必要ありませんよね?

4

2 に答える 2

6

彼は、送信ボタンのデフォルトのアクション、つまりフォームをサーバーに投稿することを防ぎたいと思っているようです。

ボタン自体を無効にすると、ほとんどのブラウザーでボタンが灰色がかって表示されるため、ボタンがクリックされたことを直接示すだけです。アクションの視覚的なフィードバックを提供すると、エンドユーザーにとって使いやすくなります。

つまり、ボタンのクリックは 1 回しか実行できないため、1 回だけ実行できますが、フォームが送信されることを望んでいません。おそらく、//do something彼は ajax 呼び出しなどを行いたいと考えています。

于 2012-08-22T14:59:05.603 に答える
2

と答えた人は誰でも、フェイルプルーフソリューションを検討したに違いないと思います。

event.preventDefault(); - 実装の目的は、.click実際に送信される前にフォーム データを処理することです。<input type="submit"防止されない限り、ハンドラーを実行する前にフォームを送信する場合。

e.preventDefault()<button>またはを使用している場合は不要です<input type="button"..

$(this).prop('disabled', true);space-ボタンのクリックに相当するキーボードを防止する。

ダブル.oneクリックを防止します。

于 2012-08-22T15:00:23.493 に答える