首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Javascript keycode =/=字符码

Javascript keycode =/=字符码
EN

Stack Overflow用户
提问于 2009-12-11 20:47:53
回答 3查看 3.2K关注 0票数 6

我将keydown事件与jQuery绑定在一起,以允许在文本框中使用某些特定字符。我正在尝试让我的代码跨浏览器和平台兼容。我的主要问题是,我找不到一种方法来将接收到的键码映射到有效的字符码,特别是来自数字键盘的键码(小数点分隔符,是逗号还是句号等)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-15 17:41:29

正如我在评论中所说,这个问题背后的目标是根据数值过滤文本框。我设法通过按键事件达到了我的目标。

我已经为那些对这个解决方案感兴趣的人发布了一个jQuery plug-in

票数 1
EN

Stack Overflow用户

发布于 2009-12-11 21:56:49

这是正确的。您不能进行这样的映射;keydown甚至可能不对应于要插入的字符。或者Caps Lock可能会改变按键的含义,而你无法嗅探到这一点。和various other wrinkles

如果您想知道字符代码,您唯一的选择就是使用keypress事件。

票数 6
EN

Stack Overflow用户

发布于 2009-12-14 17:16:30

好吧,如果你的问题是键盘代码到字符的转换,为什么不让浏览器为你处理呢?这听起来可能很可怕,但您可以简单地允许浏览器修改文本框(这样delete就是delete,句点就是一个句点),然后返回并编辑它……嗯..。可能是这样的:

代码语言:javascript
代码运行次数:0
运行
复制
function hookEvents() {
    $('#myTextBox').oldValue = $('#myTextBox').value;
    $('#myTextBox').bind('keyup', function(event) {
        // Maybe nothing's changed?
        if (event.target.oldValue == event.target.value) {
            return;
        }

        var validInput = /(\-?[0-9]*(?:\.[0-9]*)?)/;
        var input = event.target.value;
        var result = validInput.exec(input);
        if (result.index != 0 || result[result.length-1] != input.length) 
        {
            event.target.value = result[0];
        }

        // update for later
        event.target.oldValue = event.target.value;
    });
}

这种方法最大的问题是,每个按下的键都会在屏幕上显示一段时间。另一方面,使用REGEX,您可以更多地控制允许输入的格式。在上面的例子中,我只允许正数或负数(带一个可选的小数点)。例如:"123“、"-123”、"-123.456“、"123.456”。

我知道这并没有真正回答你的问题,但它完全回避了这个问题!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1887874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档