Почему эта функция Javascript не работает? - PullRequest
2 голосов
/ 05 апреля 2009

У меня есть функция JavaScript, которая не работает сейчас, когда я вставил новую под нее. Вот что находится в заголовке моего документа.

 <head>
<link rel="stylesheet" href="9j3nz/style.css" type="text/css">
   <script src="jquery.js"></script>
    <script src="processing.js"></script>
<script type="text/javascript">
      function isNumberKey(evt)
      {
         var charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode > 31 && (charCode < 48 || charCode > 57))
           return false;

         return true;
      }
</script>

<script type="text/javascript">

function stopRKey(evt) {
  var evt = (evt) ? evt : ((event) ? event : null);
  var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
  if ((evt.keyCode == 13) && (node.type=="text")) 
      $("label#enter_error").show();
 {return false;}
}

document.onkeypress = stopRKey;

</script> 
  </head>

Все работает нормально, кроме функции isnumberkey, которая ранее работала. Ничего не изменилось в моем HTML. Любая помощь приветствуется. Спасибо!

Я вызываю функцию isnumberkey следующим образом:

 onkeypress="return isNumberKey(event)"

Что может мешать этому работать? Он начал действовать только после того, как я включил функцию «Стоп-Ввод».

EDIT:

После удаления функции Stop Enter Key событие isnumberkey работает снова. Я думаю, что они как-то мешают друг другу.

Ответы [ 2 ]

4 голосов
/ 05 апреля 2009

Похоже, ваш stopRKey всегда возвращает false, что может блокировать ваш isNumberKey.

Попробуйте переставить свои парены.

if ((evt.keyCode == 13) && (node.type=="text"))
  $("label#enter_error").show();
{return false;}

Должно быть

if ((evt.keyCode == 13) && (node.type=="text")) {
  $("label#enter_error").show();
  return false;
}

Обновление: Существует два способа использования оператора if.

Вы можете позвонить if с помощью одной операции: например,

if (true) alert('always true');
// or
if (true)
  alert('always true');

или вы можете вызвать оператор if с блоком кода

if (true) {
  alert('one alert');
  alert('another alert');
}

Поскольку ваши парены были не в порядке, ваш код выполнял show() только в том случае, если пользователь нажал ввод, а затем продолжил обработку оставшегося кода. Поэтому всегда вызывали return false.

1 голос
/ 05 апреля 2009

Если вы используете jQuery, вы можете упростить свой код:

$(document).keydown(e) {
    return e.keyCode == 31; // replace this with your logic
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...