4

无论捕获的事件如何,我都试图计算各种事件的输入字段的值。

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

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

有人知道方法吗?最好是跨浏览器解决方案,包括 IE8+、Chrome 和 Firefox。

任何可以帮助我的解决方案,或者用 Barney Stinson 的话来说,“骗局、骗局、喧嚣、欺骗、开局、flim flam、诡计和欺骗”都将不胜感激。

4

2 回答 2

6

仅适用于 IE:

document.queryCommandValue("OverWrite");

据我所知,Firefox 和 Chrome 没有覆盖模式。insert 键在这些浏览器中不起作用,它们始终处于插入模式

此外,Mac 键盘从一开始就没有插入键。所以 Safari 也总是处于插入模式

于 2013-08-24T03:00:05.170 回答
3

虽然我不认为你可以直接访问用户状态的Insert状态,但你可以计算出用户在编辑字段时字符串的长度。

考虑一下,与一个简单的<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借来的)相对,因为您不想对按下的 shift 键执行检查,例如。

这里的基本 POC:http: //jsfiddle.net/Xp3Jh/

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

于 2013-08-14T21:53:28.583 回答