Отключить отправку формы с помощью клавиши 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;
}
});
});