Есть ли какое-либо событие в Jquery, которое запускается, только если пользователь нажимает кнопку ввода в текстовом поле? Или любой плагин, который можно добавить, чтобы включить это? Если нет, то как бы я написал быстрый плагин, который бы сделал это?
javascript
jquery
jquery-events
Нажмите Upvote
источник
источник
e.keyCode
ключи для некоторых, лучше использоватьe.which
, это гарантирует, что вы будете обрабатывать одну и ту же кнопку в каждом браузереисточник
Вот плагин для вас: (Fiddle: http://jsfiddle.net/maniator/CjrJ7/ )
источник
$
переменной для плагина не является хорошей идеей, поскольку это может вызвать конфликты.$("#myInput").bind('click, onEnter', myCallback);
и он работал бы, не требуя ничего другого?вот плагин JQuery, чтобы сделать это
чтобы использовать его, включите код и настройте его следующим образом:
jsfiddle об этом здесь http://jsfiddle.net/VrwgP/30/
источник
func.apply(this)
эту функцию внутри функции обратного вызова, которую вы можете использоватьthis
как обычно, чтобы получить доступ к элементу, для которого было инициировано событие.e.preventDefault(); e.stopPropagation();
внутрьif (e.keyCode)
немного.Следует отметить, что использование
live()
в jQuery устарело с версии1.7
и было удалено в jQuery1.9
. Вместо этогоon()
рекомендуется использовать.Я настоятельно рекомендую следующую методологию связывания, поскольку она решает следующие потенциальные проблемы:
document.body
и передавая $ selector в качестве второго аргументаon()
, элементы могут быть присоединены, отсоединены, добавлены или удалены из DOM без необходимости иметь дело с событиями повторного или двойного связывания. Это связано с тем, что событие прикреплено,document.body
а не$selector
напрямую, что означает, что$selector
его можно добавлять, удалять и добавлять снова, и оно никогда не загрузит привязанное к нему событие.off()
ранееon()
, этот скрипт может жить либо внутри основного тела страницы, либо внутри тела вызова AJAX, не беспокоясь о случайных событиях двойной привязки.$(function() {...})
, этот сценарий может быть снова загружен либо основным телом страницы, либо внутри тела вызова AJAX.$(document).ready()
не увольняется за запросы AJAX, а$(function() {...})
делает.Вот пример:
источник
Если вы
search
вводите, вы также можете использоватьon 'search'
событие. пример,
источник
HTML-код: -
Java Script Code
Ваша форма не имеет кнопки отправки по умолчанию
источник
Еще один тонкий вариант. Я пошел на небольшое разделение полномочий, поэтому у меня есть плагин, позволяющий ловить клавишу ввода, а затем я просто привязываюсь к событиям:
И затем в использовании:
Этот вариант позволяет использовать делегирование событий (для привязки к элементам, которые вы еще не создали).
источник
Я не смог запустить
keypress
событие для кнопки ввода и почесал голову некоторое время, пока не прочитал документы jQuery:« Событие нажатия клавиши отправляется элементу, когда браузер регистрирует ввод с клавиатуры. Это похоже на событие нажатия клавиши, за исключением того, что клавиши-модификаторы и непечатаемые клавиши, такие как Shift, Esc, и удаляют события нажатия клавиши запуска, но не события нажатия клавиши. » ( https://api.jquery.com/keypress/ )
Мне пришлось использовать событие
keyup
или,keydown
чтобы поймать нажатие кнопки ввода.источник