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

#ajax #jquery #javascript-events

#jquery #ajax #jquery-события

Вопрос:

У меня есть текстовое поле, в котором отображается значение. Я хочу, чтобы, когда пользователь вводит новое значение в это текстовое поле и нажимает enter, запускалась функция ajax для выполнения операции разбивки на страницы. У меня есть текстовое поле, подобное этому:

 <input type="text" id="page" name="page" value="<?php echo($this->pn);?> />
  

И когда пользователь вводит любое новое значение и нажимаетenter, я хочу, чтобы запускалась следующая функция ajax:

update_ajax2({rpp:<?php echo($this->rpp);?>,pn:document.page.paged.value,filter:'<?php echo($this->filter);?>',orderby:'<?php echo($this->orderby);?>'});

Я пытался использовать событие нажатия клавиши для обнаружения if(e.which===13) , но это не решает проблему. Кто-нибудь может меня направить?

Комментарии:

1. Почему действие по keypress событию не решает проблему? Вы получаете сообщение об ошибке? Вы пробовали keyup вместо этого?

2. @ctcherry она вызывает функцию 2 типов при 1 нажатии клавиши. Сначала она загружает нужное мне значение, а затем при нажатии той же клавиши загружается функция для value атрибута textbox

Ответ №1:

 <input type="text" id="txt">

$('#txt').keydown(function (e) {
    if (e.keyCode == 13) {
        alert('you pressed enter ^_^');
    }
})
  

В jsfiddle.

Обновление (июнь 2022)

Обратите внимание, что код ключа устарел. Вместо этого используйте KeyboardEvent.code или KeyboardEvent.key свойства:

 if (e.key === "Enter") {
   // Pressed enter
}
  

Комментарии:

1. @ExperimentX спасибо, чувак, но она всегда имеет значение, которое находится в value атрибуте textbox. Она не обнаруживает новое значение….

2. @AwaisQarni не могли бы вы опубликовать скрипку??

3. @AwaisQarni я имею в виду на jsfiddle. подключитесь или обновите мой jsfiddle.net/VCdEn

4. @AwaisQarni … нет .. это не из-за значения. это связано с элементом form. т. е. форма отправляется (по умолчанию). чтобы предотвратить это. e.preventDefault() обновление здесь jsfiddle.net/FxU9X/6

5. Стандартное удобство использования предписывает использовать событие key-up вместо key-down. Это дает им возможность отменить после нажатия клавиши down нажатием модификатора (например, esc) перед подъемом вверх. Кроме того, именно так большинство библиотек будут перехватывать событие, чтобы оно обеспечивало согласованность. Нажатие клавиши Down предназначено для ввода данных, а нажатие клавиши up — для событий.

Ответ №2:

Используйте это, у меня это работает 🙂

 $("#search-txt" ).on( "keydown", function(event) {
    if(event.which == 13) 
        return false;//do something
});
  

Ответ №3:

Ознакомьтесь с этим плагином: https://github.com/jeresig/jquery.hotkeys

Ответ №4:

Событие нажатия клавиши должно сработать, попробуйте

 function keyPressedTest(a)
{
    a=(a)?a:window.event;
    input=(a.target)?a.target:a.srcElement;
    if(a.keyCode==13)
    {
        your_function()
    }
}