Javascript Char代码 - 密钥代码0

时间:2018-02-19 08:12:09

标签: javascript validation keycode

根据我的研究,我在input field thymeleaf HTML中有一个javascript进行了数字验证,根据我的研究,有几种方法,如何做到这一点。

其中一个:

    $(document).ready(function () {
      $("#quantity").keypress(function (e) {
         if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
            $("#errmsg").html("Digits Only").show().fadeOut("slow");
                   return false;
        }
       });
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

问题:if if语句中的0是什么?

根据this密钥代码8是退格,48-57之间的数字是数字(即:1,2,3,...,9)。

2 个答案:

答案 0 :(得分:2)

keypress事件的情况下,对于大多数不产生字符的键,给出值0。存在例外,例如退格。此外,实际代码依赖于实现(包括硬件)。

e.which为零时,代码可能会假定没有生成可打印字符,因此没有理由阻止它。这对于箭头和软键特别有用:您需要允许用户使用左右键移动插入符号,可能与 Shift Ctrl 一起移动。您也不想阻止用户使用 F5 刷新页面,或使用 Del 删除字符,或者使用 Tab <移动到下一个输入字段< / KBD>。所有这些键都带有e.which等于0。

然而,剧本并不完美。例如,它不允许用户使用剪贴板处理快捷方式,例如 Ctrl + C

一般情况下,建议不要阻止输入键,因为您不希望用户认为键盘卡住了。更好的是允许键呈现相应的字符,但(仅)通过视觉线索指示输入无效。

答案 1 :(得分:1)

这意味着JS引擎无法识别密钥,因此此代码确保密钥可识别。

  

无法识别密钥的实现使用密钥值0。

来源:https://www.w3.org/TR/uievents/#dom-keyboardevent-keycode