У меня есть следующий javascript на моей странице, который, кажется, не работает.
$('form').bind("keypress", function(e) {
if (e.keyCode == 13) {
e.preventDefault();
return false;
}
});
Я хотел бы отключить отправку формы при вводе, или еще лучше, чтобы вызвать мою форму отправки AJAX. Любое решение приемлемо, но код, который я включил выше, не препятствует отправке формы.
javascript
jquery
forms
form-submit
Адам Левитт
источник
источник
Ответы:
Если
keyCode
не пойман, ловиwhich
:РЕДАКТИРОВАТЬ: пропустил, лучше использовать
keyup
вместоkeypress
РЕДАКТИРОВАТЬ 2: Поскольку в некоторых более новых версиях Firefox отправка формы не запрещена, безопаснее также добавить событие нажатия клавиши в форму. Также это не работает (больше?), Просто связывая событие с формой «имя», но только с идентификатором формы. Поэтому я сделал это более очевидным, изменив пример кода соответствующим образом.
РЕДАКТИРОВАТЬ 3: изменено
bind()
наon()
источник
e.which
, поэтому вам не нужно проверятьe.keyCode
, но +1 для наиболее вероятной причины этой проблемы.return false;
для этого?e.preventDefault();
кажется достаточноkeyCode === 13 && !$(e.target).is('textarea')
Обычно форма отправляется, Enterкогда вы сосредоточены на элементах ввода.
Мы можем отключить Enterключ (код
13
) для элементов ввода в форме:ДЕМО: http://jsfiddle.net/bnx96/325/
источник
textareas
в той же форме. Использование$("form input")
вместо,$("form :input")
кажется, исправить это. ДЕМО: jsfiddle.net/bnx96/279Еще короче
источник
function(e) {e.preventDefault();}
поскольку возвращаемые значения в обработчиках событий устарели: stackoverflow.com/a/20045473/601386Enter
а не об отключении отправки формы с помощьюSubmit
кнопки.onClick
событие jQuery для проверки формы и по-прежнему отправлять с использованием jQuery. Другими словами, есть случаи, когда вы хотите отправить только через javascript / jQuery. Хотя вы все еще можете использовать AJAX с этим решением, оно отключает базовую функциональностьsubmit
метода.which
Docs.источник
Это решение работает со всеми формами на веб-сайте (также с формами, вставленными с помощью AJAX), предотвращая только ввод текста. Поместите это в функцию готовности документа и забудьте эту проблему на всю жизнь.
источник
Большинство ответов выше не позволит пользователям добавлять новые строки в поле textarea. Если это то, чего вы хотите избежать, вы можете исключить этот конкретный случай, проверив, какой элемент в данный момент имеет фокус:
источник
Излишняя необходимость записывать и тестировать каждое нажатие клавиши ВВОД меня действительно беспокоит, поэтому мое решение основано на следующем поведении браузера:
Нажатие ENTER вызовет событие щелчка на кнопке отправки (протестировано в IE11, Chrome 38, FF 31) ** (ссылка: http://mattsnider.com/how-forms-submit-when-pressing-enter/ )
Поэтому мое решение состоит в том, чтобы удалить стандартную кнопку отправки (т. Е.
<input type="submit">
), Чтобы вышеуказанное поведение не выполнялось, потому что нет кнопки отправки, которая бы волшебным образом нажималась при нажатии клавиши ВВОД. Вместо этого я использую обработчик щелчков jQuery на обычной кнопке, чтобы отправить форму с помощью.submit()
метода jQuery .Демо: http://codepen.io/anon/pen/fxeyv?editors=101
** это поведение не применимо, если форма имеет только 1 поле ввода, и это поле является текстовым; в этом случае форма будет отправлена после нажатия клавиши ВВОД, даже если в разметке HTML нет кнопки отправки (например, поле поиска). Это стандартное поведение браузера с 90-х годов.
источник
если вы просто хотите отключить отправку при входе и кнопку отправки, используйте событие onsubmit формы
Вы можете заменить «return false» на вызов функции JS, которая будет делать все необходимое, а также отправлять форму в качестве последнего шага.
источник
Вы можете сделать это идеально в чистом Javascript, простом и не требующем библиотеки. Вот мой подробный ответ на похожую тему: Отключение клавиши ввода для формы
Короче, вот код:
источник
e.target.nodeName === 'INPUT' && e.target.type !== 'textarea'
. С указанным кодом это позволит отправлять формы, если установлен флажок радио или флажок.Я не знаю, если вы уже решили эту проблему, или кто-то пытается решить это прямо сейчас, но вот мое решение для этого!
источник
Простой способ - изменить тип кнопки на кнопку - в HTML, а затем добавить событие в JS ...
Изменить от этого:
к
И в JS или JQuery добавить:
источник
Следующий код отменит ключ ввода от использования для отправки формы, но все же позволит вам использовать ключ ввода в текстовой области. Вы можете редактировать его дальше в зависимости от ваших потребностей.
источник
В Firefox, когда вы вводите и нажимаете ввод, он отправляет свою верхнюю форму. Решение в форме отправки и добавить это:
источник
Спустя 3 года ни один человек не ответил на этот вопрос полностью.
Запрашивающий хочет отменить отправку формы по умолчанию и вызвать свой собственный Ajax. Это простой запрос с простым решением. Нет необходимости перехватывать каждый символ, введенный в каждый ввод.
Предполагая, что форма имеет кнопку отправки, a
<button id="save-form">
или an<input id="save-form" type="submit">
, выполните:источник
Я слышал, что
which
это не рекомендуется, поэтому измените Лучший рейтинг ответа на этот.ссылка https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/which
источник
Когда файл закончен (загрузка завершена), скрипт обнаруживает каждое событие для ключа «Ввод» и отключает событие позади.
источник
Полное решение на JavaScript для всех браузеров
Код выше и большинство решений идеальны. Тем не менее, я думаю, что наиболее понравился один «короткий ответ», который является неполным.
Вот и весь ответ. в JavaScript с собственной поддержкой IE 7.
Это решение теперь запрещает пользователю отправлять сообщения, используя клавишу ввода, и не будет перезагружать страницу или переместит вас в верхнюю часть страницы, если ваша форма находится где-то ниже.
источник
Как насчет этого:
Это должно отключить все формы с кнопками отправки в вашем приложении.
источник