web-dev-qa-db-ja.com

_someフィールドのみでEnterキーによるフォーム送信を無効にする

ユーザーが慣れているため、従来の「Enterキーを押したときにフォームを送信する」動作を維持したい。しかし、反射によって、テキスト入力ボックスでの入力が完了したときにEnterキーを押すことがよくありますが、実際に完全なフォームを使用する前にです。

Enterキーをハイジャックしたいのは、特定のクラスの入力にフォーカスがある場合のみです。

探している 関連質問 これは私が探しているもののように見えます:

_if (document.addEventListener) {
    document.getElementById('strip').addEventListener('keypress',HandleKeyPress,false);
} else {
    document.getElementById('strip').onkeypress = HandleKeyPress;
}
_

しかし、if (document.addEventListener) {の部分は私には馴染みがありません。

72
justSteve

次のように、これらのフィールドでEnter keypressをキャプチャしてキャンセルできます。

$('.noEnterSubmit').keypress(function(e){
    if ( e.which == 13 ) return false;
    //or...
    if ( e.which == 13 ) e.preventDefault();
});

次に、入力時にclass="noEnterSubmit" :)

他の人が後でこれを見つけた場合に先を見て、jQuery 1.4.(まだリリースされていない)でこれを短くすることができます:

$('.noEnterSubmit').bind('keypress', false);
133
Nick Craver

HTMLコードの<Head>タグに次のコードを追加するだけです。 Enterキーでフォームを送信しますフォームのすべてのフィールド

<script type="text/javascript">
    function stopEnterKey(evt) {
        var evt = (evt) ? evt : ((event) ? event : null);
        var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if ((evt.keyCode == 13) && (node.type == "text")) { return false; }
    }
    document.onkeypress = stopEnterKey;
</script>
3
Kailas Mane

特定のクラス(この例では 'enterSubmit')でのみ入力を許可するには:

jQuery(document).ready(function(){
    jQuery('input').keypress(function(event){
        var enterOkClass =  jQuery(this).attr('class');
        if (event.which == 13 && enterOkClass != 'enterSubmit') {
            event.preventDefault();
            return false;   
        }
    });
});
1
Silas Palmer
 <input type="text"  onkeydown="return (event.keyCode!=13);" />
1
stackuser