【发布时间】:2015-05-01 15:53:56
【问题描述】:
我有一个输入,我想要插入字符时的特定行为,但我想要像 ctrl+c 和 这样的快捷方式的默认行为ctrl+v.
这是html:
<input type="text" onkeypress="onInputKeyPress(event)" />
和 JavaScript:
function onInputKeyPress(event) {
if (event.charCode >= 32) {
// do some processing here
event.preventDefault();
}
}
这在 IE 和 Chrome 中运行良好,但在 Firefox 中则不行。这是因为当我使用 ctrl+c 或 ctrl+v 时,onkeypress 没有得到在 IE 和 Chrome 上调用,但在 Firefox 中调用。
所以我尝试将此代码插入到我的处理程序的开头:
if (event.ctrlKey) {
// leave default behavior for shortcuts
return true;
}
现在,当我按 ctrl+c 时,不会调用我的自定义处理,但快捷方式仍然不起作用(文本不会被复制到剪贴板)。
我应该做更多的事情来强制 Firefox 执行默认操作吗?
【问题讨论】:
-
我们能看到更多你的代码或减少的测试用例吗?这应该按照您描述的方式工作。注意:如果你只针对最近的浏览器,它可能应该使用“input”事件而不是“keypress”。
-
@RaphaelSchweikert 其余代码与此问题无关。代码与我提供的示例中的代码相同,除了有一些处理而不是注释
// do some processing here并且当我的问题发生时甚至不会调用该代码。
标签: javascript html firefox dom-events