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
为零时,代码可能假定没有生成可打印字符,因此没有理由阻止它。这对于箭头键和软键尤其有用:您需要允许用户使用左右键移动插入符,可能连同 Shift 或 Ctrl。您也不希望阻止用户使用 F5 刷新页面,或使用 Del 删除字符,或移动到下一个输入字段使用 Tab。所有这些键都带有 e.which
等于 0.
然而,剧本并不完美。例如,它不允许用户使用剪贴板处理快捷方式,例如 Ctrl+C.
一般来说,不建议像这样阻止输入键,因为您不希望用户认为他们的键盘被卡住了。更好的方法是让按键呈现相应的字符,但(仅)通过视觉提示指示输入无效。
我在 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
为零时,代码可能假定没有生成可打印字符,因此没有理由阻止它。这对于箭头键和软键尤其有用:您需要允许用户使用左右键移动插入符,可能连同 Shift 或 Ctrl。您也不希望阻止用户使用 F5 刷新页面,或使用 Del 删除字符,或移动到下一个输入字段使用 Tab。所有这些键都带有 e.which
等于 0.
然而,剧本并不完美。例如,它不允许用户使用剪贴板处理快捷方式,例如 Ctrl+C.
一般来说,不建议像这样阻止输入键,因为您不希望用户认为他们的键盘被卡住了。更好的方法是让按键呈现相应的字符,但(仅)通过视觉提示指示输入无效。