我想检查并查看用户(闪烁)光标位置是否在textarea中的两个字符串之间。
处理标签事件是它自己的事情,我只想知道处理与标签相关的光标位置的方法。
答案 0 :(得分:0)
要查找内部标记匹配,您可以将文本左右分割,然后在正确的一半中查找正确的打开/关闭标记。 从那里,使用相同的一半更换标签很简单:
<textarea>blah <code> this is the code </code> and this is not.</textarea>
<script>
function handleKeys(e) {
var t,n,s,r, pad=" ";
if (e.shiftKey && e.keyCode == 32) {
t = this.value,
n = this.selectionStart,
s = this.scrollTop,
r = [t.slice(0, n), t.slice(n)];
this.value = r.join(pad);
this.selectionStart = this.selectionEnd = n + pad.length;
this.scrollTop = s;
e.preventDefault();
}
}
</script>
按代码标签内的选项卡将插入制表符。你还应该考虑为只使用键盘来逃脱制表符陷阱的人提供一些方法,可能是转义键等等。
编辑:我添加了滚动简历以修复某些浏览器中的错误,这些浏览器在插入时将textarea滚动到顶部。由于这是一个可以激发很多事件的事件,我还优化了功能,完全忽略了不相关的按键(而不是每次按键完成一些工作)。