13
$(window).keydown(function(event){
    if(event.keyCode == 13) {
      event.preventDefault();
      return false;
    }
  });

上記は、システム全体でフォーム送信者として「Enter」キーを効果的に殺すコードであり、まさに私が望んでいるものです。ただし、タグでは Enter キーも無効にtextareaなっています。ユーザーは、次の行に移動するために Enter キーを押すことができるはずです。textarea上記のコードを変更して、入力がタグ内からのものである場合、行を実行しないことを検出する方法はありevent.preventDefault();ますか?

私はサイト全体に非常に多くのフォームを持っています.それらを個別に設定しなければならないのは悪夢であり、おそらく意味がありません.普遍的な方法が必要です. 上記のコードは、サイトのすべてのページで実行され、「Enter」キーを押して誤って送信するのを防ぎます。

4

7 に答える 7

11

keyup私はイベントを好む...event.targetプロパティを使用する

$(window).keydown(function(event){
    if((event.which== 13) && ($(event.target)[0]!=$("textarea")[0])) {
      event.preventDefault();
      return false;
    }
  });

デモ

于 2012-03-12T17:21:06.320 に答える
11

あなたはこれを試すことができます

$(document).ready(function(){
    $(window).keydown(function(event){
        if(event.keyCode == 13 && event.target.nodeName!='TEXTAREA')
        {
          event.preventDefault();
          return false;
        }
    });
});

フィドルはここにあります。

于 2012-03-12T17:41:41.390 に答える
5

@ 3nigmaのソリューションは問題なく機能しますが、この動作を実現する別の方法があります。

$(function(){
    $('#myform').find('input,select').keydown(function(event){
        if ( event.keyCode == 13 ){
            event.preventDefault();
        }
    });
});
于 2012-03-12T17:26:24.220 に答える
2
$('#form_editar').keypress(function(e) {
    var allowEnter = {"textarea": true, "div": true};
    var nodeName = e.target.nodeName.toLowerCase();

    if (e.keyCode == 13 && allowEnter[nodeName] !== true) {
        e.preventDefault();
    }
});

@The Alpha から少し編集します。wysiwyg エディターには div を使用します :)...

于 2015-01-20T15:48:57.253 に答える
1

これは、大砲のようなアプローチではなく、この蚊に対してイベント オブジェクトとメスのようなアプローチを使用する良い機会のようです。

つまり、次のようなものです。

...
// Only watch for a bad type of submission when a submission is requested.
$('form .contact-form').submit(function(e){
    // If a submit is requested, and it's done via keyboard enter, stop it.
    if ((e.keyCode || e.which) == 13) ? ;){ // Try to use normalized enter key code
        e.preventDefault(); // Prevent the submit.
    }
    // All other mouse actions just go through.
});

ここでの利点は比較的明白です。フォームを送信しない場所で Enter キーを押しても、このコードは認識せず、気にせず、問題を引き起こしません。

于 2012-03-12T17:40:54.643 に答える
0

submit代わりに、フォームのイベントのトリガーをブロックしないのはなぜですか?

$('form').submit(function(event){
  event.preventDefault();
});
于 2012-03-12T17:21:39.217 に答える