Отключить отправку формы с помощью клавиши Enter только по нескольким полям

Я хочу сохранить обычную форму, когда я нажимаю Enter, потому что пользователи знакомы. Но при рефлексии они часто нажимают кнопку ввода, когда заканчивают текстовым полем ввода, но до того, как они будут выполнены с полной формой.

Я хотел бы захватить клавишу Enter только тогда, когда фокус находится на определенном классе ввода.

В поисках Вопросы, относящиеся, похоже на то, что я ищу:

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

но часть if (document.addEventListener) { мне незнакома.

Ответ 1

Вы можете захватывать и отменить ввод keypress в таких полях, как это:

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

Затем на ваших входах просто дайте им class="noEnterSubmit":)

Заглядывая вперед, если другие находят это позже, в jQuery 1.4.3 (еще не вышло) вы можете сократить его до этого:

$('.noEnterSubmit').bind('keypress', false);

Ответ 2

Просто добавьте следующий код в тег <Head> в свой HTML-код. Он будет заполнять заявку на ввод ключа. Для всех полей формы

<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

Чтобы разрешить ввод только в определенном классе (в этом примере "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;   
        }
    });
});