【发布时间】:2013-10-17 03:59:57
【问题描述】:
我在用于将字符输入到 Web 界面的条形码扫描仪上遇到字符代码问题。
如果条码有一个符号,例如 -(破折号/连字符/减号),它会给我字符代码 189,这在许多字符集中都是正确的。事实上,如果我在扫描时选择了文本输入,它将按预期输入 - 字符。但是,如果我从全局文档中截取 keypress 或 keyup 事件并使用 fromCharCode() 函数自己构建字符串,而不是让浏览器处理它,我会得到 ½ 字符,这当然是 189 的 unicode 转换代码。
在事件本身中,keyCode 和“which”都显示为 189,而 keyIdentifier 是“U+00BD”。不幸的是,我真正需要的 charCode 值始终是 0。
现在我当然可以在大约 5 秒内手动处理此转换。问题是我不知道可能从扫描仪获得的完整代码集,而且我担心未处理的字符会在未来数周或数月后出现并让人头疼。或者,我可以将原始字符代码上传到服务器并尝试在 PHP 中处理它。不过,出于时间和响应性的原因,我更愿意在客户端处理它。将假按键发送到不可见的文本输入可能也可以,但这是一个非常糟糕的解决方法。
似乎应该有更好的方法来做到这一点,而且我必须遗漏一些明显的东西。有人有什么想法吗?
【问题讨论】:
-
which和keyCode都依赖于系统并且已弃用。event.key的值是多少? -
条码扫描器如何准确地将字符输入到您的 Web 界面?
-
这取决于浏览器,我希望?
-
"However, if I intercept the keypress or keyup event from the global document and use the fromCharCode() function to build the string myself, rather than letting the browser handle it"你有什么特别的理由要这样做吗?为什么不直接使用隐藏输入并检测变化?
标签: javascript unicode character-encoding keypress keycode