jQuery, имитирующий событие нажатия клавиши в поле ввода

#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. Неправильный ответ. Прочитайте заголовок вопроса еще раз.