【发布时间】:2012-08-08 16:06:25
【问题描述】:
我正在尝试禁止在文本输入中输入所有其他字符。
因为要获得$,您必须按shift-键和4-键。我不确定您将如何获得这样的 keyCode?p>
【问题讨论】:
标签: javascript keycode
我正在尝试禁止在文本输入中输入所有其他字符。
因为要获得$,您必须按shift-键和4-键。我不确定您将如何获得这样的 keyCode?p>
【问题讨论】:
标签: javascript keycode
【讨论】:
键码仅与键相关。 $ 是一个字符,通过 Shift 和 4 两个键实现。$ 没有明确的键码使用onkeydown时
编辑:爱德华指出onkeypress 使用组合键,并且确实有组合键。每天学习新东西:)
Here's some code,根据 MDN 提供的 onkeydown 示例编辑,用于检测按键键码。
Here's the fiddle 更新为对 Firefox 友好,使用来自 this S.O. post 的帮助。 JQuery 解决方案也可以,如果你那样做的话。
【讨论】:
onkeypress,尽管将它换成 onkeydown 在 Firefox 中确实有效。
那么不要使用这种方式来解决您的问题:因为您无法预测每个键盘布局都会始终将 $-sign 输入为 shift+4。
您仍然可以获取 keycode 4,并检查是否按下了 shift,但您无法确定这一点!!
因此最好简单地替换您字段中的所有非法字符(在您提交数据之前)。想想:str.replace()
您还可以在输入框的 onkeyup 事件中检查您的非法字符集,在您键入时有效地替换所有非法字符!
喜欢:onkeyup="this.value.replace(/[your illegal characters]/gi, '')"
那应该做你想做的。
请注意:您永远不应信任浏览器输入,并且仍应在接收脚本中过滤此输入!!!
祝你好运!!
【讨论】:
$ 没有密钥代码,因为它不是有效的密钥 - 它必须通过某种移位器访问。
通常,您会检查移位器是否处于活动状态,并监听相关键上的keypress 事件。您的实例中的 QWERTY 布局是这样的:
var shiftPressed = false;
$(window).keydown(function(e) {
if(e.which == 16) { shiftPressed = true; }
if(e.which == 52 && shiftPressed)
{
// Do whatever here...
}
});
$(window).keyup(function(e) {
if(e.which == 16) { shiftPressed = false; }
});
【讨论】:
onkeypress - Unicode CHARACTER 代码是:36
onkeydown - Unicode KEY 码是:52
【讨论】: