为什么这个Javascript函数不起作用?

时间:2009-04-05 16:24:19

标签: javascript jquery

我有一个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)"

可能会阻止这项工作?自从我输入Stop Enter Key功能后,它才开始起作用。

编辑:

删除Stop Enter键功能后,isnumberkey事件再次起作用。我认为他们正在互相干扰。

2 个答案:

答案 0 :(得分:4)

好像你的stopRKey总是返回false,这可能会阻塞你的isNumberKey。

尝试重新安排你的parens。

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');
}

由于您的问题出现故障,如果用户按下Enter键,您的代码只执行show(),然后继续处理剩余的代码。所以总是调用return false。

答案 1 :(得分:1)

如果您正在使用jQuery,则可以简化代码:

$(document).keydown(e) {
    return e.keyCode == 31; // replace this with your logic
}