Javascript 撤消文本区域中的选项卡
当在textarea标记中按下Javascript 撤消文本区域中的选项卡,javascript,textarea,Javascript,Textarea,当在textarea标记中按下选项卡,只需插入一个\t字符,如何防止聚焦下一个元素有很多问题。或任何其他角色。所有这些问题的答案如下: 捕获一个TAB键 获取当前插入符号位置和选择信息 替换该值,使其包含\t或用户想要的任何内容 所有这些都可以正常工作,直到在选项卡 如果您这样做,您将体验到一些副作用,具体取决于您使用的浏览器: Firefox将删除\t,但插入符号pos将转到末尾,并选中textarea中的所有文本 Chrome不会将此\t计算为用户输入,因此CTRL+Z将撤消上次操作之前的
选项卡
,只需插入一个\t
字符,如何防止聚焦下一个元素有很多问题。或任何其他角色。所有这些问题的答案如下:
\t
或用户想要的任何内容选项卡
如果您这样做,您将体验到一些副作用,具体取决于您使用的浏览器:
- Firefox将删除
,但插入符号pos将转到末尾,并选中textarea中的所有文本\t
- Chrome不会将此
计算为用户输入,因此\t
将撤消上次操作之前的操作,保留CTRL+Z
在适当的位置,还有一些难以预测的插入符号问题\t
- IE的行为和Chrome一样
var ta = document.getElementById("textareaId");
ta.addEventListener("keydown", function(e) {
if (e.which===9) {
e.preventDefault();
document.execCommand("insertText", false, "\t");
}
}, false);
参考:
然而,对于IE来说,没有完美的解决方案。IE11有ms beginUndoUnit和ms endUndoUnit,但根据Tim Down的说法,即使这样也不能很好地工作
document.execCommand(“insertText”)
在Firefox中不起作用