2010-11-25 3 views
1

я поместил следующий код в верхней части моей страницы в голове:Почему эта страница не останавливает нажатие клавиши?

<script type="text/javascript"> 

     function stopRKey(evt) { 

      console.log(evt.keyCode); 

      var evt = (evt) ? evt : ((event) ? event : null); 

      var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); 

      console.log(evt.keyCode); 

      if ((evt.keyCode == 13) && (node.type == "text")) { 
       return false; 
      } 
     } 

     document.onkeypress = stopRKey; 

    </script> 

На одном из моих страниц это не обжиг события, когда я ударил войти. Но только одна из моих страниц, как кажется, работает, и записывает код ключа 13, тем самым останавливая обратную передачу.

Любые идеи, почему это событие не будет срабатывать на этой определенной странице?

Приветствие, Пит

+0

Вы должны показать остальную часть вашего кода нерабочей страницы. – 2010-11-25 10:29:43

+1

Если этот код работает на большинстве ваших страниц, это, вероятно, правильно. Поэтому, чтобы ответить на ваш вопрос, вы должны разместить дополнительную информацию о странице, на которой она не работает. Одна из возможностей - это еще один обработчик событий, прослушивающий более глубокий уровень иерархии документов, который останавливает событие нажатия клавиши. – Simon 2010-11-25 10:31:46

ответ

0

Вы можете, безусловно, упростить код. Там нет причин, почему это не должно работать, для <input type="text"> элементов:

function stopRKey(evt) { 
    evt = evt || window.event; 
    var node = evt.target || evt.srcElement; 
    console.log(evt.keyCode); 

    if (evt.keyCode == 13 && node.nodeName == "INPUT" && node.type == "text") { 
     return false; 
    } 
} 
0

Возможно, там элемент формы на разбитой странице (ы) запускающей обратную передачу, который не является текстовым узлом. Попробуйте удалить вторую часть условия, которое предотвращает отправку, чтобы увидеть, что произойдет:

if (evt.keyCode == 13) { 
    return false; 
} 
Смежные вопросы