javascript - Обнаружение клавиши ввода в текстовом поле ввода


Я пытаюсь выполнить функцию, если вводится нажатие на конкретном входе.

Что я делаю неправильно?

$(document).keyup(function (e) {
    if ($(".input1").is(":focus") && (e.keyCode == 13)) {
        // Do something
    }
});

Есть ли лучший способ сделать это, что бы сказать, если ввести нажатие на .input1 сделать функцию?


Answers



$(".input1").on('keyup', function (e) {
    if (e.keyCode == 13) {
        // Do something
    }
});


//keyup not compatible with Jquery select(), Keydown is.



$(document).keyup(function (e) {
    if ($(".input1:focus") && (e.keyCode === 13)) {
       alert('ya!')
    }
 });

Или просто привязывайтесь к самому входу

$('.input1').keyup(function (e) {
    if (e.keyCode === 13) {
       alert('ya!')
    }
  });

Чтобы выяснить, какой ключевой код вам нужен, используйте веб-сайт http://keycode.info




event.key === "Enter"

Более свежий и много более чистый: используйте event.key . Больше никаких произвольных номеров!

const node = document.getElementsByClassName(".input")[0];
node.addEventListener('keydown', function(event) {
    if (event.key === "Enter") {
        // Do work
    }
});

Документы Mozilla

Поддерживаемые браузеры




Попробуйте это, чтобы обнаружить Enter нажатую в текстовое поле.

$(function(){

$(".input1").keyup(function (e) {
    if (e.which == 13) {
        // Enter key pressed
    }
 });

});



Возможно, слишком поздно ответить на этот вопрос. Но следующий код просто предотвращает ввод ключа. Просто копирование и вставка должны работать.

        <script type="text/javascript"> 
        function stopRKey(evt) { 
          var evt = (evt) ? evt : ((event) ? event : null); 
          var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); 
          if ((evt.keyCode == 13) && (node.type=="text"))  {return false;} 
        } 

        document.onkeypress = stopRKey; 

        </script>



Лучший способ, который я нашел, - использовать keydown ( keyup не работает хорошо для меня).

Примечание. Я также отключил отправку формы, потому что обычно, когда вам нравится делать какие-либо действия при нажатии Enter Key, единственное, что вам не нравится, это отправить форму :)

$('input').keydown( function( event ) {
    if ( event.which === 13 ) {
        // Do something
        // Disable sending the related form
        event.preventDefault();
        return false;
    }
});



 $(document).ready(function () {
        $(".input1").keyup(function (e) {
            if (e.keyCode == 13) {
                // Do something
            }
        });
    });