JavaScript密钥代码
JavaScript Key Codes
我正在使用一个我没有编写的JavaScript例程。它是从文本框的onkeydown
属性调用的,以防止不需要的键击。
第一个论点显然没有被使用。第二个参数是应该允许的字符列表。
function RestrictChars(evt, chars) {
var key;
var keychar;
if (window.event)
key = window.event.keyCode;
else if (e)
key = e.which;
else
return true;
keychar = String.fromCharCode(key);
if ((key == null) || (key == 0) || (key == 8) ||
(key == 9) || (key == 13) || (key == 27))
// Control key
return true;
else if (((chars).indexOf(keychar) > -1))
return true;
else
return false;
}
这似乎适用于字母数字字符。但是,.
和/
等字符会导致此函数返回false
,即使这些字符包含在chars
参数中也是如此。例如,如果按下.
键,则key
将设置为190,keychar
将设置为"3/4"字符。
有人能看到这是如何运作的吗?和/或为什么没有?我对JavaScript的了解还不够,看不出它在做什么。
有两个错误:首先,如果您正在分析已键入的字符,则需要使用keypress
事件而不是keydown
,因为这是唯一可以"告诉"您有关实际键入的字符的可靠信息的事件。有关此事件和JavaScript关键事件的更多详细信息,请参阅http://unixpapa.com/js/key.html.其次,有对一个名为e
的变量的引用,该变量与evt
参数不对应(但应该)。
这里有一个重写,假设您有一个名为textBox
的变量,它引用了文本输入元素。
jsFiddle:http://jsfiddle.net/9DZwL/
代码:
function isKeypressCharValid(e, chars) {
e = e || window.event;
// Allow delete, tab, enter and escape keys through
if (/^(8|9|13|27)$/.test("" + e.keyCode)) {
return true;
}
var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
var charTyped = String.fromCharCode(charCode);
return chars.indexOf(charTyped) > -1;
}
textBox.onkeypress = function(evt) {
if (!isKeypressCharValid(evt, "abc123")) {
return false;
}
};
我也不是JS的人,但是。。。我可以解释它应该如何工作;然而,我不知道你为什么会得到你提到的钥匙的价值。
keychar = String.fromCharCode(key);
这将检查密钥是否为可打印字符(字母、标点符号等)
if ((key == null) || (key == 0) || (key == 8) ||
(key == 9) || (key == 13) || (key == 27))
// Control key
以上检查键是否为空或(||
)`0或8(退格)或9(制表符)或13(0x0D,或ENTER)或27(0x1B或ESCAPE)-这正是您期望的布尔结果:if<这种情况>或者<该条件>或者<另一个条件>或
else if (((chars).indexOf(keychar) > -1))
这将检查keychar
是否在作为chars
参数传递的字符串中
- Windows密钥的密钥代码
- 可以'无法获得正确的密钥代码
- 如何以正确的方式将密钥添加到此反应代码中
- Chrome 显示未定义密钥代码
- 获取密钥代码值 - JavaScript
- 从字符串中获取密钥代码/密钥
- 跨浏览器获取密钥代码
- 粘贴IE返回的密钥代码
- Javascript document.addEventListener仅适用于1个密钥代码
- 在Chrome浏览器中获取Tab键的密钥代码的问题
- Javascript和密钥代码,防止文本框中出现特殊字符
- 协调Firefox斜杠处理和密钥代码
- 在 Android 版 Chrome 中,密钥代码始终为零
- 解析主密钥云代码以下用户
- 使用JavaScript访问浏览器's密钥库中的签名/加密—示例代码?(WebCryptoAPI)
- 浏览器密钥代码列表
- 如何在将密钥传递给javascript代码时保护密钥
- 解析云代码功能不能使用主密钥,它没有被提供
- JavaScript密钥代码
- 如何在不显示API密钥的情况下使此代码正常工作?我正在Node.js/Angular/Express上构建应用程序