Остановить событие нажатия клавиши - PullRequest
29 голосов
/ 10 сентября 2009

Как остановить событие нажатия клавиши при нажатии клавиши.

У меня есть обработчик нажатия клавиш, мне нужно остановить событие нажатия клавиш.

На самом деле у меня есть форма и текстовое поле.

когда пользователь нажимает клавишу «ввод», нажатием клавиши я запускаю событие и получаю обработчик.

отправка формы будет запущена при нажатии клавиш, поэтому мне нужно остановить событие нажатия клавиш в моем обработчике нажатия клавиш.

Ответы [ 6 ]

43 голосов
/ 10 сентября 2009
function onKeyDown(event) {   
  event.preventDefault();
}

http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-Event-preventDefault

или

function onsubmit(event) {
  return false;
}

вернуть false, чтобы остановить распространение событий

4 голосов
/ 14 ноября 2011

В опере вы должны использовать событие keypress, чтобы предотвратить действия по умолчанию для событий клавиатуры. keydown работает для предотвращения действий по умолчанию во всех браузерах, но не в Opera.

См. этот длинный список несоответствий в обработке клавиатуры в разных браузерах.

1 голос
/ 03 ноября 2017

Здесь я остановил всплывающее событие для клавиш вверх / dn / left / right:

    $(document).on("keydown", function(e) {
        if(e.keyCode >= 37 && e.keyCode <= 40) {
            e.stopImmediatePropagation();
            return;
        }
    });

Я также пытался e.preventDefault или event.cancelBubble = true из ответов выше, но они не оказали влияния.

1 голос
/ 11 сентября 2009

Попробуйте event.cancelBubble = true в обработчике событий.

0 голосов
/ 23 января 2010

Мне удалось получить event.preventDefault (); работать в Safari и Firefox, но не в IE7 или IE8.

Если вы хотите отключить только клавишу ввода, убедитесь, что вы также проверяете значение клавиши (13 для Enter) и устанавливаете только event.preventDefault () для этой клавиши.

Кто-нибудь может придумать ответ для IE7 / 8 или Opera?

0 голосов
/ 10 сентября 2009

запись

    <script type="text/javascript">
      function keyDn(obj)
      {
        if(window["event"]["keyCode"]==48)  // key 0 will disabled keyPress event
         {
           obj["onkeypress"]=null;
          }
       }
      function keyPs(obj)
      {
        alert("Keypress");
      }

    </script>

  <form id="form1" runat="server">
    <div>
     <input type="text" onkeydown="keyDn(this)" onkeypress="keyPs(this)" />
    </div>
  </form>

в обработчике нажатия клавиш.

...