我正在尝试计算各种事件的输入字段的值,而不管捕获的事件是什么。
我正在考虑事件keypress keyup keydown cut paste
事件(我忘了什么吗?)。
我正在尝试确定文本输入INSERT
模式是打开(默认 - 打开)还是关闭。我无法通过捕获该键的键事件来确定模式,但我不知道初始状态是什么。
有谁知道吗?优选地 - 包括IE8 +,Chrome和FF的跨浏览器解决方案。
任何解决方案,或者用Barney Stinson的话来说,“诈骗,骗局,喧嚣,蒙骗,开局,脆弱的火焰,战术和竹子”都可以帮助我。
提前致谢。
答案 0 :(得分:5)
仅适用于IE:
document.queryCommandValue("OverWrite");
据我所知,Firefox和Chrome没有覆盖模式。插入键在这些浏览器中不起作用,它们始终处于插入模式。
此外,Mac键盘从一开始就没有 insert 键。因此,Safari也始终处于插入模式。
答案 1 :(得分:2)
虽然我不认为您可以直接访问用户的Insert
状态,但可以确定用户编辑字段时字符串的长度。< / p>
考虑到这一点,与简单的<input id="input" />
:
var i = document.getElementById('input');
document.onkeydown = function(e) {
var c = String.fromCharCode(event.keyCode);
if(null !== c.match(/\w/)) {
l = i.value.length;
}
}
document.onkeyup = function(e) {
var c = String.fromCharCode(event.keyCode);
if(null !== c.match(/\w/)) {
if(l === i.value.length) {
console.log("Keyboard insert might be off - length hasn't changed");
}
}
}
请注意,有一项基本检查可尝试隔离仅字母和数字(match
针对keyCode
(借用from here),例如,您不想对正在按下的shift键执行检查。
此处的基本POC:http://jsfiddle.net/Xp3Jh/
我确信你可以做更深入的检查,但希望这会有所帮助!