javascript onkeydown无法在数字小键盘中工作

时间:2017-12-15 12:37:36

标签: javascript html

我在从Num pad输入数字值时遇到问题。我的脚本只接受来自' qwerty'上方数字键的数字。键。我想要的是用户也可以从数字键盘输入数字。以下是HTML:

<script>
    function isNumberKey(evt)
           {
              var charCode = (evt.which) ? evt.which : event.keyCode
              if (charCode != 46 && charCode > 31 
                && (charCode < 48 || charCode > 57))
                 return false;

              return true;
           }
    </script>

但是我试图在onkeypress和onkeyup函数上调用脚本,但它没有工作,因为我已经在那里调用了函数。以下是仅接受数值的脚本。 此外,我已经仔细检查了Num Lock,这不是问题。

{{1}}

任何帮助将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:1)

因为numlock数字键码是不同的正常数字键。

  

Ex keycode 48 = number 0,当Numlock 0 = keycode 96;

Look this article

function isNumberKey(evt){
  var charCode = (evt.which) ? evt.which : event.keyCode
  console.log("KeyCode: "+charCode);
  if (charCode >= 96 && charCode <= 106 )
      console.log("Numlock number detected: "+charCode);
}
<td style="border: 1px solid #ddd;background-color:#E5E4E2;">
     <input type="text" name="qty_enter[]"  id="qty_enter0"  onkeydown="isNumberKey(event)" style="width: 65px;"/>
</td>

答案 1 :(得分:0)

您的功能实际上是为了阻止数字键盘输入任何键。 使用true反转返回false,反之亦然,以启用nums但禁用字母和其他所有内容。

答案 2 :(得分:0)

Hey I got answer for my question after 3-4 days long. Script was ok. It was pretty simple I just changed event as shown in below.

<input type="text" name="qty_enter[]"  id="qty_enter0" onkeyup="sum(0),itc_details(0),prevent_zero(0),advance_seeting1();" onkeypress="return isNumberKey(event)" onkeydown="copyValue2(1)" style="width: 65px;outline: none;border: none; background: transparent;"/>