Как вы предотвращаете ENTERотправку формы нажатием клавиши в веб-приложении?
javascript
events
user67722
источник
источник
Вот обработчик jQuery, который можно использовать, чтобы остановить ввод команд, а также остановить клавишу возврата назад -> назад. Пары (keyCode: selectorString) в объекте «keyStop» используются для сопоставления узлов, которые не должны запускать свои действия по умолчанию.
Помните, что Интернет должен быть доступным местом, и это нарушает ожидания пользователей клавиатуры. Тем не менее, в моем случае веб-приложению, над которым я работаю, все равно не нравится кнопка «Назад», поэтому отключение сочетания клавиш - это нормально. Обсуждение «должен войти -> отправить» важно, но не связано с фактическим заданным вопросом.
Вот код, чтобы вы могли подумать о доступности и почему вы на самом деле хотите это сделать!
источник
Просто верните false из обработчика onsubmit
или если вы хотите обработчик в середине
источник
submit
кнопки<form>
от получения представлен на все это бросать ребенка вместе с водой.источник
e.preventDefault()
скорее, чемreturn false
достигнет того же конца, но позволит событию достигать обработчиков в родительских элементах. Действие по умолчанию (отправка формы) все еще будет предотвращеноВам нужно будет вызвать эту функцию, которая просто отменит поведение отправки формы по умолчанию. Вы можете прикрепить его к любому полю ввода или событию.
источник
Клавиша ENTER просто активирует кнопку отправки формы по умолчанию, которая будет первой
браузер находит в форме.
Поэтому нет кнопки отправки, но что-то вроде
РЕДАКТИРОВАТЬ : В ответ на обсуждение в комментариях:
Это не сработает, если у вас есть только одно текстовое поле - но, возможно, это и есть желаемое поведение в этом случае.
Другая проблема заключается в том, что это зависит от Javascript для отправки формы. Это может быть проблемой с точки зрения доступности. Это можно решить, написав с
<input type='button'/>
помощью javascript, а затем вставив<input type='submit' />
внутри<noscript>
тега. Недостаток этого подхода заключается в том, что для браузеров с отключенной поддержкой javascript вы должны будете отправлять формы на ENTER. Это зависит от ФП, чтобы решить, каково поведение в этом случае.Я не знаю никакого способа сделать это, не вызывая JavaScript вообще.
источник
Вкратце ответ на чистом Javascript:
Это только отключает действие нажатия «Enter» для ввода type = 'text'. Посетители могут по-прежнему использовать клавишу «Enter» на всем сайте.
Смотрите мой подробный ответ на подобный вопрос здесь
источник
e.target.nodeName === 'INPUT' && e.target.type !== 'textarea'
. С указанным кодом это позволит отправлять формы, если установлен флажок радио или флажок.Все ответы, которые я нашел по этой теме, здесь или в других сообщениях, имеют один недостаток, то есть он предотвращает фактический триггер изменения также на элементе формы. Поэтому, если вы запускаете эти решения, событие onchange также не запускается. Чтобы преодолеть эту проблему, я изменил эти коды и разработал следующий код для себя. Я надеюсь, что это станет полезным для других. Я дал класс для моей формы "protect_auto_submit" и добавил следующий JavaScript:
источник
Я всегда делал это с помощью обработчика нажатий клавиш, как в прошлом, но сегодня нашел более простое решение. Клавиша ввода просто запускает первую не отключенную кнопку отправки в форме, поэтому на самом деле все, что требуется, это перехватить эту кнопку при попытке отправки:
Вот и все. Клавиши будут обрабатываться как обычно браузером / полями / и т. Д. Если сработала логика ввода-отправки, то браузер найдет эту скрытую кнопку отправки и активирует ее. И тогда обработчик javascript предотвратит передачу.
источник
hidden
на вход будет короче. хороший взлом :)Я потратил некоторое время на создание этого кросс-браузера для IE8,9,10, Opera 9+, Firefox 23, Safari (ПК) и Safari (MAC)
Пример JSFiddle: http://jsfiddle.net/greatbigmassive/ZyeHe/
Базовый код - вызовите эту функцию через «onkeypress», прикрепленный к вашей форме, и передайте «window.event» в нее.
источник
Тогда в вашей форме:
Хотя было бы лучше, если бы вы не использовали навязчивый JavaScript.
источник
charCode
. Я также переместилreturn false
внутрь блока if. Хороший улов.В моем случае этот jQuery JavaScript решил проблему
источник
<input>
полей в форме?Запрет "ВВОД" для отправки формы может причинить неудобства некоторым вашим пользователям. Так что было бы лучше, если вы будете следовать процедуре ниже:
Напишите событие onSubmit в своем теге формы:
напишите функцию Javascript следующим образом:
Какова бы ни была причина, если вы хотите запретить отправку формы при нажатии клавиши Enter, вы можете написать следующую функцию в javascript:
Спасибо.
источник
Добавьте этот тег в форму -
onsubmit="return false;"
тогда вы можете отправить форму только с некоторой функцией JavaScript.источник
Чтобы предотвратить отправку формы при нажатии enterв
textarea
илиinput
отправку поле , проверьте событие отправки, чтобы определить, какой тип элемента отправил событие.Пример 1
HTML
JQuery
Лучшее решение - если у вас нет кнопки отправки и вы запускаете событие с помощью обычной кнопки. Это лучше, потому что в первом примере 2 события отправки запускаются, но во втором примере срабатывает только 1 событие отправки.
Пример 2
HTML
JQuery
источник
Вы найдете это более простым и полезным: D
источник
Как насчет:
источник
Пожалуйста, проверьте эту статью Как предотвратить нажатие клавиши ВВОД при отправке веб-формы?
источник
Я думаю, вы можете поймать ключ в форму в javascript и предотвратить даже пузыриться. ENTER на веб-странице в основном просто отправляет форму, в которой находится выбранный элемент управления.
источник
Эта ссылка предоставляет решение, которое работает для меня в Chrome, FF и IE9, а также эмулятор для IE7 и 8, который поставляется с инструментом разработчика IE9 (F12).
http://webcheatsheet.com/javascript/disable_enter_key.php
источник
<script type="text/javascript"> function stopRKey(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 = stopRKey; </script>
Другой подход состоит в том, чтобы добавить кнопку ввода к форме только тогда, когда она должна быть отправлена, и заменить ее простым делителем во время заполнения формы.
источник
Просто добавьте этот атрибут в ваш тег FORM:
Затем в своем теге SCRIPT добавьте это:
Затем, когда вы создаете кнопку или по какой-либо другой причине (например, в функции), вы наконец разрешаете отправку, просто переворачиваете глобальное логическое значение и выполняете вызов .submit (), аналогично этому примеру:
источник
Я сталкивался с этим сам, потому что у меня есть несколько кнопок отправки с разными значениями 'name', так что при отправке они делают разные вещи в одном и том же php-файле. Кнопка
enter
/return
прерывает это, поскольку эти значения не передаются. Вот я и подумал, активирует ли кнопкаenter
/return
первую кнопку отправки в форме? Таким образом, вы можете использовать кнопку «vanilla» submit, которая либо скрыта, либо имеет значение «name», которое возвращает исполняемый файл php обратно на страницу с формой в нем. Или же значение по умолчанию (скрытое) «имя», которое активируется нажатием клавиши, и кнопки отправки перезаписывают свои собственные значения «имя». Просто мысль.источник
Как насчет:
И просто назовите вашу кнопку правой кнопкой мыши, и она все равно будет отправлена, но текстовые поля, то есть явное значениеOriginalTarget, когда вы нажмете return в одном, не будут иметь правильного имени.
источник
Это сработало для меня.
onkeydown = "return! (event.keyCode == 13)"
источник
Вот как я это сделаю:
источник
положить в Javascript внешний файл
или где-то внутри тега body
источник
У меня была такая же проблема (формы с тоннами текстовых полей и неквалифицированных пользователей).
Я решил это так:
используя это в коде HTML:
Таким образом,
ENTER
ключ работает как запланировано, но требуется подтверждение (ENTER
обычно второе нажатие).Я оставляю читателям поиск сценария, отправляющего пользователя в поле, где он нажал,
ENTER
если он решит остаться в форме.источник