Подтвердить что ты не робот

Остановить событие нажатия клавиши

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

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

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

whn пользователь нажимает клавишу "enter", keydown я запускает событие и имеет обработчик.

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

4b9b3361

Ответ 2

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

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

Ответ 3

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

Ответ 4

Запись

    <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>

в обработчике keydown.

Ответ 5

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

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

Любой, кто может найти ответ для IE7/8 или Opera?

Ответ 6

Здесь я остановил событие пузырька для кнопок вверх/вниз/влево/вправо:

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

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