Как обработать нажатие клавиши ENTER, чтобы вызвать событие onBlur ()? - PullRequest
4 голосов
/ 01 июля 2011

У меня есть веб-приложение для iPad с большим <form> в какой-то момент. Каждый вход в нем имеет функции, управляющие значениями, как для событий keyUp, так и Blur.

Дело в том, что если пользователь случайно нажал кнопку «GO» во время набора (считается нажатием клавиши «ввод»), форма будет отправлена. Я хотел бы перехватить этот компортмент и вызвать вместо него событие onBlur () для сфокусированного элемента.

Пока у меня есть это:

load(){
  document.addEventListener("keydown",logPressedKeys,false);
}
/**
 * logs the keys hit in the console, will eventually trigger my onBlur event
 */
  function logPressedKeys(e) {
      console.log(e.keyCode);
      if (e.keyCode==13) {
      console.log('Enter spotted: prevent!');
      e.preventDefault();//Shall prevent submitting
      return false;//Hoping it prevents default if above fails
  }
}

У вас есть какие-нибудь советы / идеи / улучшения по этому поводу?

Примечание: должен быть хотя бы один фокус ввода для клавиатуры iPad.

Ответы [ 2 ]

2 голосов
/ 05 июля 2011

Обнаружено, что document.activeElement работает в Safari на iPad.

function logPressedKeys(e) {
    console.log(e.keyCode);
    if (e.keyCode==13) {
      e.preventDefault();
      console.log('Enter spotted: prevent!');
      temp=document.activeElement;
      //console.log(temp);
      temp.onblur();
      return false;
}
return true;
}
0 голосов
/ 05 июля 2011

Это не будет работать в каждом браузере.

document.addEventListener ( "KeyDown", logPressedKeys, ложь);

Используйте вот так:

  document.onkeydown = function (e) {
            alert(e.keyCode); 

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...