输入输入时,检查INSERT模式是否为ON

时间:2013-08-14 21:22:16

标签: javascript javascript-events keyboard

我正在尝试计算各种事件的输入字段的值,而不管捕获的事件是什么。

我正在考虑事件keypress keyup keydown cut paste事件(我忘了什么吗?)。

我正在尝试确定文本输入INSERT模式是打开(默认 - 打开)还是关闭。我无法通过捕获该键的键事件来确定模式,但我不知道初始状态是什么。

有谁知道吗?优选地 - 包括IE8 +,Chrome和FF的跨浏览器解决方案。

任何解决方案,或者用Barney Stinson的话来说,“诈骗,骗局,喧嚣,蒙骗,开局,脆弱的火焰,战术和竹子”都可以帮助我。

提前致谢。

2 个答案:

答案 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/

我确信你可以做更深入的检查,但希望这会有所帮助!