Javascript 字符代码 - 键代码 0

Javascript Char Codes - Key Code 0

我在 thymeleaf HTML 中有一个 input field,在 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 语句中的 0 是什么?

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

说明JS引擎无法识别密钥,所以这段代码是为了确保密钥是可识别的。

Implementations that are unable to identify a key use the key value 0.

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

keypress 事件的情况下,为大多数不产生字符的键指定值 0。存在例外情况,例如退格键。此外,实际代码取决于实现(包括硬件)。

e.which 为零时,代码可能假定没有生成可打印字符,因此没有理由阻止它。这对于箭头键和软键尤其有用:您需要允许用户使用左右键移动插入符,可能连同 ShiftCtrl。您也不希望阻止用户使用 F5 刷新页面,或使用 Del 删除字符,或移动到下一个输入字段使用 Tab。所有这些键都带有 e.which 等于 0.

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

一般来说,不建议像这样阻止输入键,因为您不希望用户认为他们的键盘被卡住了。更好的方法是让按键呈现相应的字符,但(仅)通过视觉提示指示输入无效。