2013-04-17 15 views
10

私は内部にテキストフィールドを持つフォームを持っています。ユーザがを押した場合にブラウザがフォーム全体を送信すると、デフォルトの動作を無効にしようとしています。を入力してください。入力を無効にします

$('#recaptcha_response_field').keydown(function(event) { if (event.keyCode == 13) { 
    event.preventDefault(); 
    event.stopPropagation(); 
    event.stopImmediatePropagation(); 
    alert("You Press ENTER key"); 
    return false; 
    } 
}); 

現在、「あなたはEnterキーを押す」と表示され、デフォルトの動作は無効になりません。

+1

フォームのイベントを提出使い、入力のKeyDownイベントイベントを使用しないでください。 –

+1

重複http://stackoverflow.com/questions/585396/how-to-prevent-enter-keypress-to-submit-a-web-form Plsはここに提出する前にgoogleに質問します。これは、すでに答えられている元の質問をあなたに提供していたでしょう。 – iAmClownShoe

+1

'preventDefault'は絶対に十分です。伝播を止めたり、falseを返す必要はありません。 – Bergi

答えて

20

これを試してみてください:

$(document).on("keypress", 'form', function (e) { 
    var code = e.keyCode || e.which; 
    if (code == 13) { 
     e.preventDefault(); 
     return false; 
    } 
}); 

これは、上記のソリューションのどれもがあなたのために働いていない場合、フォームがkeypress

DEMO HERE

+0

動作しませんが、サブミット後に – user2288298

+0

キーアップがリダイレクトされるため、既に発生しているため、デフォルトの動作を無効にすることはできません。 – iAmClownShoe

+0

@ user2288298はコードを更新しました。一度だけ試してください。 –

2

に提出防ぐことができます、あなたは、なぜとにかくJavaScriptを使用していますボタンタイプを「ボタン」<input type='button'>とし、JavaScriptを使用して送信しないでください

$('#form_id').submit(); 
1

Uはこのスクリプトを使用して、全体からの入力を防ぐことができます。

<script type="text/javascript"> 
     $(document).on("keypress", 'form', function (e) { 
      if (e.target.className.indexOf("allowEnter") == -1) { 
       var code = e.keyCode || e.which; 
       if (code == 13) { 
        e.preventDefault(); 
        return false; 
       } 
      } 
     }); 
    </script> 

あなたは、私がこれを発見し、それが私の作品

8

を入力使用する必要が制御するクラス名を置きます。

+0

ただ簡単、ありがとう! –

3

スクリプトがテキストエリアなどの他の要素のEnterキーをブロックするのを防ぐためです。ターゲットを「フォーム」から「入力」に変更します。

$(document).on("keypress", "input", function (e) { 
 
    var code = e.keyCode || e.which; 
 
    if (code == 13) { 
 
     e.preventDefault(); 
 
     return false; 
 
    } 
 
});

関連する問題