【发布时间】:2015-05-20 07:36:50
【问题描述】:
我的一个页面上有一个输入,上面有侦听器,它们对输入的值执行格式化。
该字段只允许某些输入(数字以及某些其他字符),这由按键和按键监听器控制。 keypress 可以防止非法输入,keyup 会执行格式化(并且还会检查输入,以防用户将某些内容粘贴到字段中而不是键入)。
它在 Chrome 和 IE 中运行良好(回到 IE8,我不关心之前的任何事情),但在 Firefox 中我无法使用 tab 键,arrow kbd> 键,backspace,并且无法使用 ctrl+c/v
复制或粘贴>经过一番调查,我发现问题出在这个监听器上:
$(this).keypress(function(e)
{
consumeIllegalFloatKeyPress(e);
});
在 IE 和 Chrome 中,像 tab、arrows 和 backspace 这样的键甚至不会触发侦听器,而像 这样的按键当与 ctrl 键一起使用时,v 和 c 也不会触发它。但是,在 FF 中,它会拾取所有按键,从而导致
consumeIllegalFloatKeyPress(e);
接到电话,发现按键是非法的。
修复很简单 - 我有一组合法输入用于检查应该允许的内容,所以我只添加了 v 和 c 的字符代码,并为ctrlKey 输入一个密钥。
我感到困惑的是,为什么这些在不同浏览器中的处理方式不同?我认为,因为它都是 javascript,所以它会在所有浏览器中处理相同的 CTRL 键。
如果有人对此有任何信息,或者知道我可以在哪里阅读更多信息,我将非常感兴趣并感激不尽!
【问题讨论】:
标签: javascript jquery firefox