Ответ 1
Если вы используете JQuery, это довольно просто. Ну вот
$(document).keypress(
function(event){
if (event.which == '13') {
event.preventDefault();
}
});
Я пытаюсь отключить ключ Enter в моей форме. Код, который у меня есть, показан ниже. По какой-то причине ключ ввода по-прежнему вызывает отправку. Код находится в моей голове и кажется правильным из других источников.
disableEnterKey: function disableEnterKey(e){
var key;
if(window.event)
key = window.event.keyCode; //IE
else
key = e.which; //firefox
return (key != 13);
},
Если вы используете JQuery, это довольно просто. Ну вот
$(document).keypress(
function(event){
if (event.which == '13') {
event.preventDefault();
}
});
Большинство ответов находятся в jquery. Вы можете сделать это отлично в чистом Javascript, просто и без библиотеки. Вот он:
<script type="text/javascript">
window.addEventListener('keydown',function(e){if(e.keyIdentifier=='U+000A'||e.keyIdentifier=='Enter'||e.keyCode==13){if(e.target.nodeName=='INPUT'&&e.target.type=='text'){e.preventDefault();return false;}}},true);
</script>
Этот код отлично работает, потому что он отключает только действие "Enter" для ввода типа ввода = "текст". Это означает, что посетители все еще могут использовать "Enter" ключ в textarea и на всей веб-странице. Они все равно смогут отправить форму, нажав кнопку "Отправить" клавишами "Tab" и нажав "Enter".
Вот некоторые основные моменты:
Если вы хотите отключить "Enter" для других действий, вы можете добавить console.log(e); для ваших целей тестирования и нажмите F12 в хроме, перейдите на вкладку "console" и нажмите "backspace" на странице и загляните внутрь, чтобы увидеть, какие значения будут возвращены, затем вы можете настроить таргетинг на все эти параметры для дальнейшего улучшения кода выше, чтобы удовлетворить ваши потребности в "e.target.nodeName" , "e.target.type" и многом другом...
попробуйте это ^^
$(document).ready(function() {
$("form").bind("keypress", function(e) {
if (e.keyCode == 13) {
return false;
}
});
});
Надеюсь, что это поможет
В теге формы просто вставьте это:
onkeypress="return event.keyCode != 13;"
пример
<input type="text" class="search" placeholder="search" onkeypress="return event.keyCode != 13;">
Это может быть полезно, если вы хотите выполнять поиск при вводе и игнорировании ENTER.
/// Grab the search term
const searchInput = document.querySelector('.search')
/// Update search term when typing
searchInput.addEventListener('keyup', displayMatches)
Вот простой способ выполнить это с помощью jQuery, который ограничивает его соответствующими элементами ввода:
//prevent submission of forms when pressing Enter key in a text input
$(document).on('keypress', ':input:not(textarea):not([type=submit])', function (e) {
if (e.which == 13) e.preventDefault();
});
Благодаря этому ответу: fooobar.com/questions/13964/....
Для решения, отличного от javascript, попробуйте поместить <button disabled>Submit</button>
в вашу форму, расположенную перед любыми другими кнопками/входами. Я предлагаю сразу после тега <form>
открытия (и используя CSS, чтобы скрыть его, accesskey = '- 1', чтобы вывести его из последовательности вкладок и т.д.)
AFAICT, пользовательские агенты ищут первую кнопку отправки, когда ENTER попадает на вход, и если эта кнопка отключена, затем прекратите искать другую.
Кнопка по умолчанию элемента формы - это первая кнопка отправки в древовидном порядке, владельцем формы которой является этот элемент формы.
Если пользовательский агент поддерживает разрешение неявным образом отправить форму (например, на некоторых платформах, попавших в клавишу "enter", в то время как текстовое поле сфокусировано неявно представляет форму), сделайте это для формы, по умолчанию которой есть кнопка определенное поведение активации должно приводить к тому, что пользовательский агент запускает синтетические шаги активации щелчка по этой кнопке по умолчанию.
Следовательно, если кнопка по умолчанию отключена, форма не представляется, если используется такой механизм неявного представления. (При отключенной кнопке не активировано действие.)
Однако я знаю, что Safari 10 MacOS неверно работает здесь, отправив форму, даже если кнопка по умолчанию отключена.
Итак, если вы можете принять javascript, вместо этого вставьте <button
onclick="return false;"
>Submit</button>
. В ENTER обработчик onclick будет вызван, и поскольку он возвращает false, процесс отправки останавливается. Браузеры, с которыми я тестировал это, даже не будут выполнять проверку валидации браузера (фокусирование первого недопустимого элемента управления формой, отображение сообщения об ошибке и т.д.).
Вы можете попробовать что-то вроде этого, если вы используете jQuery.
$("form").bind("keydown", function(e) {
if (e.keyCode === 13) return false;
});
Это будет ждать нажатия клавиш, если оно Enter, оно ничего не сделает.
Просто добавьте следующий код в тег <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>
Я проверил все вышеперечисленные решения, они не работают. Единственное возможное решение - поймать событие onkeydown для каждого ввода формы. Вам нужно подключить disableAllInputs к загрузке страницы или через jquery ready()
/*
* Prevents default behavior of pushing enter button. This method doesn't work,
* if bind it to the 'onkeydown' of the document|form, or to the 'onkeypress' of
* the input. So method should be attached directly to the input 'onkeydown'
*/
function preventEnterKey(e) {
// W3C (Chrome|FF) || IE
e = e || window.event;
var keycode = e.which || e.keyCode;
if (keycode == 13) { // Key code of enter button
// Cancel default action
if (e.preventDefault) { // W3C
e.preventDefault();
} else { // IE
e.returnValue = false;
}
// Cancel visible action
if (e.stopPropagation) { // W3C
e.stopPropagation();
} else { // IE
e.cancelBubble = true;
}
// We don't need anything else
return false;
}
}
/* Disable enter key for all inputs of the document */
function disableAllInputs() {
try {
var els = document.getElementsByTagName('input');
if (els) {
for ( var i = 0; i < els.length; i++) {
els[i].onkeydown = preventEnterKey;
}
}
} catch (e) {
}
}
Решение очень простое:
Заменить тип "Отправить" кнопкой
<input type="button" value="Submit" onclick="this.form.submit()" />
Лучший способ, который я нашел здесь:
action="javascript: void(0)"
или action="return false;"
(не работает на меня)