在输入时检查INSERT模式是否为ON
Check if INSERT mode is ON when typing in an input
我正在尝试计算各种事件的输入字段的值,而不考虑捕获的事件。
我正在考虑事件keypress keyup keydown cut paste
事件(我忘了什么吗?)。
我正在尝试确定文本输入INSERT
模式是打开(默认为打开)还是关闭。我无法通过捕捉该键的键事件来确定模式,尽管我不知道初始状态是什么。
有人知道办法吗?最好是包含IE8+、Chrome和Firefox的跨浏览器解决方案。
任何解决方案,或者用Barney Stinson的话来说,";骗局、骗局、喧嚣、欺骗、赌博、虚张声势、阴谋和欺骗"如果能帮助我,我将不胜感激。
仅适用于IE:
document.queryCommandValue("OverWrite");
据我所知,Firefox和Chrome没有覆盖模式。插入键在这些浏览器中不起作用,并且它们始终处于插入模式。
此外,Mac键盘从一开始就没有插入键。因此Safari也始终处于插入模式。
虽然我认为您不能直接访问用户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/
我确信你可以做更深入的检查,但希望这能有所帮助!
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何检测是否有溢出
- 当调用.of()然后调用.on()时,Jquery是否可能将事件推迟
- 对动态加载的内容使用.on()时,是否可以从元素中获取属性
- 检查是否处理了 on 事件
- jQuery实时替换(是否只有on()?)
- 在输入时检查INSERT模式是否为ON
- jquery的select是否有on select事件
- HTML标签是否与jQuery .on('hover',…)兼容?
- 是否有可能检测到'capslock是on'在jquery的点击事件中
- 是否有一个跨浏览器标准的on-load事件用于HTML's "object"标签
- 使用jQuery's $().on('mouseenter',function(){})是否优于
- 是否有类似于Node.js中使用的stream.on('data')的.net Core ?
- 是否可以使用敬畏.js框架与ruby on rails
- 在非DOM对象中使用jQuery's on/trigger支持时,是否存在权衡?
- 是否存在使用“;JQuery.on()"大量地
- 使用 .on 绑定点击是否受益于 ngTouch
- jQuery .on()是否支持"load"或“;ready"事件