#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть поле ввода, которое динамически заполняется некоторым AJAX, и как только оно будет заполнено, я хотел бы, чтобы JavaScript автоматически нажимал «Enter» (ключевое событие 13) на этом входе, вызывая запуск другой функции, которая скрыта для меня. для запуска.
Возможно ли это с помощью jQuery? Прямо сейчас у меня есть этот код, который не работает:
$('#myInputId').focus().trigger({ type : 'keypress', which : 13 });
У вас есть какие-либо подсказки о том, что я делаю не так?
Комментарии:
1. Как вы думаете, почему передача объекта, подобного этому, должна работать? Любой источник?
2. Я нашел это
[...].trigger({...});
по другой теме здесь, в StackOverflow. Я попробовал это и не сработал, поэтому спросил снова.
Ответ №1:
Вы можете создать объект события:
$('#myInputId').trigger(jQuery.Event('keypress', { keycode: 13 }));
Комментарии:
1. Спасибо за ввод, но указанный вами код не сработал. Однако я не получил вашего комментария. Вы имеете в виду, что вместо
'keypress'
я должен попытаться установить'keyCode'
?2. Отлично работает в соответствии с моим тестом — протестировано на Chrome 12, IE9 и FF 3.6
3. @Masiar он имел в виду изменение на
jQuery.Event('keypress', {keyCode: 13})
но, пожалуйста, посмотрите мой тестовый пример и дайте мне знать, если у вас это не сработает. РЕДАКТИРОВАТЬ: теперь это могло бы сработать, еслиkeypress
обработчик не был добавлен с помощью jQuery — так ли это?4. Ну, ваш тестовый пример в порядке, но я не вижу смысла в моей проблеме. У меня поле ввода автоматически заполняется AJAX (
document.getElementById('myInputId').value = data.from.AJAX;
), и я хотел бы, после этого, просто имитировать событие «enter», чтобы отправить на этот ввод то, что было извлечено из AJAX. Я ищу строку кода JavaScript для этого.5. Я только что обнаружил, изучив библиотеку, которую я использую, что она действительно использует
keyCode
. Затем я попробовал$('#myInputId').trigger(jQuery.Event('keypress', {keyCode: 13}));
, и это сработало. Спасибо за поддержку и извините за мою некомпетентность.
Ответ №2:
Привет, вы могли бы попробовать использовать событие изменения при изменении области ввода :
$('#myInputId').change(function(){
$('#myInputId').focus().trigger({ type : 'keypress', which : 13 });
});
Комментарии:
1. Спасибо за предложение, но это тоже не работает :(.
Ответ №3:
У меня этот метод сработал.
var keyEvent = jQuery.Event("keypress");
keyEvent.keyCode = 13;
$("#myInputId").trigger(keyEvent);
Ответ №4:
При нажатии клавиши Enter
:
$(document).keypress(function(event){
var keycode = (event.keyCode ? event.keyCode : event.which);
if(keycode == '13'){
alert('You pressed a "enter" key in somewhere');
}
});
Комментарии:
1. Неправильный ответ. Прочитайте заголовок вопроса еще раз.