1

IE7 のデフォルトの送信ボタンの問題を解決しています。入力フィールドで「Enter」キーを押すと、ページ上のいくつかのボタンがクリックされます。だから私はこれに対する解決策を見つけました:

 $(document).bind("keypress", function(ev) {
     ev.keyCode == 13 && ev.preventDefault();  
 });

しかし、このコードには問題があります: textarea タグは「改行」を取得しません。だから私はこれを試しました:

 $(document).bind("keypress", function(ev) {
     if (ev.keyCode == 13 && ev.target.type != "textarea")
         ev.preventDefault();  
 });

動作しますが、汚れているように見えます。質問は、問題のより良い解決策をアドバイスできますか?

前もって感謝します。

4

3 に答える 3

5

Enterキーを押したときにフォームの送信を単に防止する場合は、フォームが送信しようとしているときにキーを押してテストします...

$(your_form).submit(function(ev){
    if (ev.keyCode == 13){
        // Prevent form submission behaviors if the event was fired by enter keypress
        ev.preventDefault();return false;
    }
    // And code for form submission here, or just keep the return true to make it behave normally.
    return true;
});
于 2012-08-28T06:46:49.730 に答える
0

これは汚れていません。ただし、1行が必要な場合でも、次の方法で実行できます。

ev.keyCode == 13 && ev.target.type != "textarea" && ev.preventDefault();  
于 2012-08-28T06:31:06.023 に答える
0

より洗練された解決策は、jQuery の送信ハンドラーを使用して false を返すことです。

$('#myForm').submit(function(ev){
  // custom form handling code here

  return false;// prevent browser default form submission
});

.preventDefault()または、 submit ハンドラーに渡されたイベント オブジェクトを呼び出すこともできます。

于 2012-08-28T06:48:59.313 に答える