Заборонити введення ключа в будь-якому місці
Якщо у вас немає <textarea>форми у вашій формі, просто додайте до свого <form>:
<form ... onkeydown="return event.key != 'Enter';">
Або з jQuery:
$(document).on("keydown", "form", function(event) {
return event.key != "Enter";
});
Це призведе до того, що кожне натискання клавіші всередині форми буде перевірено на key. Якщо його немає Enter, то він повернеться trueі все продовжить як завжди. Якщо це так Enter, то воно повернеться, falseі все негайно зупиниться, тому форма не буде подана.
keydownПодія краще , keyupоскільки keyupзанадто пізно , щоб блок відправки форми. Історично було також keypress, але це застаріло, як це було KeyboardEvent.keyCode. Ви повинні використовувати KeyboardEvent.keyзамість цього, який повертає назву натиснутої клавіші. Якщо Enterвстановлено прапорець, це буде перевіряти 13 (звичайний вхід), а також 108 (введення цифри).
Зауважте, що, $(window)як це пропонується в деяких інших відповідях, замість $(document)цього не працює для keydown/ keyupв IE <= 8, тож це не гарний вибір, якщо ви хочете охопити і тих поганих користувачів.
Дозволити вводити ключ лише для текстових областей
Якщо у вас є <textarea>форма (яка, звичайно, повинна прийняти клавішу Enter), тоді додайте обробник клавіш до кожного окремого вхідного елемента, який не є <textarea>.
<input ... onkeydown="return event.key != 'Enter';">
<select ... onkeydown="return event.key != 'Enter';">
...
Щоб зменшити котельну плиту, це краще зробити за допомогою jQuery:
$(document).on("keydown", ":input:not(textarea)", function(event) {
return event.key != "Enter";
});
Якщо на цих елементах введення приєднані інші функції обробника подій, які ви також хочете з певних причин викликати на клавіші Enter, тоді лише запобігайте поведінці за замовчуванням події, а не повертати помилкову, щоб вона могла належним чином поширюватися на інші обробники.
$(document).on("keydown", ":input:not(textarea)", function(event) {
if (event.key == "Enter") {
event.preventDefault();
}
});
Дозволити вводити ключ лише на текстових областях та надсилати лише кнопки
Якщо ви також хочете дозволити клавішу введення на кнопках надсилання <input|button type="submit">, ви завжди можете уточнити селектор, як показано нижче.
$(document).on("keydown", ":input:not(textarea):not(:submit)", function(event) {
// ...
});
Зауважте, що, input[type=text]як це пропонується в деяких інших відповідях, не охоплює ці нетекстові введення HTML5, тож це не гарний вибір.