Отмена привязки события пользовательского ключа для ввода текста с помощью JQuery - PullRequest
0 голосов
/ 11 июня 2018

Я связываю функцию с событием нажатия клавиш при нажатии клавиши ВВОД.Я хочу, чтобы эта функция запускалась при нажатии клавиши ENTER, если пользователь не вводит текстовую область с идентификатором input_area:

$(document).keydown(function(e) {
  if (e.keyCode == 32 && e.target != $("#input_area")) {
  scroll_to_location();
  }
});

. Я пытался отменить привязку всей клавиши с помощью $(document).unbind('keydown'), но это точновесь документ, а не только на короткий период, когда есть ввод текста.

Есть ли удобный способ отменить привязку события для ввода textarea с помощью JQuery?

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Вы можете проверить идентификатор цели originalEvent, чтобы определить, следует ли игнорировать этот элемент.

$(document).on('keydown', function (e) {
    if (e.originalEvent.target.id === 'input_area') return;

    //do logic
});
0 голосов
/ 11 июня 2018

Я бы порекомендовал делать связывание / открепление с включением и выключением так:

$(document).on('keydown', '#input_area', function(e) {
   if(e.which == 13) {
      console.log("enterPressed");
   }
});

$(document).on('click', '#unbindBtn', function(e) {
   $(document).off('keydown', '#input_area');
});
<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  </head>
  <body>
    <input id="input_area" placeholder="Tap Enter" />
    <button id="unbindBtn">Unbind</button>
  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...