是否可以绑定 Ctrl + Alt + L 将预定义的字符串插入 focus textarea到光标位置?例如,我在textarea中键入一些文本,然后我按 Ctrl + Alt + L 并且<a href="" title=""></a>
是插入当前光标位置。
答案 0 :(得分:1)
是。使用keydown
事件和Stack Overflow上浮动的其中一个插入符号位置的文本区域函数。对于密钥检测,请注意我必须使用keydown
事件而不是keypress
事件(这应该用于检测已键入的字符),因为IE不会触发Ctrl + Alt + L的keypress
个事件,因此在不同的映射键盘上可能会出错。对于光标位置,我从this answer复制并使用了类似的东西。请参阅以下答案,以便在IE中讨论此问题:
Caret position in textarea, in characters from the start Is there an Internet Explorer approved substitute for selectionStart and selectionEnd?
另外,请注意,在执行此操作后,您可能需要将光标定位在合理的位置,我的代码不会覆盖。
function getCaret(el) {
if ("selectionStart" in el) {
return el.selectionStart;
} else if (document.selection) {
el.focus();
var r = document.selection.createRange();
if (r == null) {
return 0;
}
var re = el.createTextRange(), rc = re.duplicate();
re.moveToBookmark(r.getBookmark());
rc.setEndPoint("EndToStart", re);
return rc.text.length;
}
return 0;
}
var textArea = document.getElementById("yourTextarea");
textArea.onkeydown = function(evt) {
evt = evt || window.event;
if (evt.ctrlKey && evt.altKey && evt.keyCode == 76) {
var cursorPos = getCaret(this);
this.value = this.value.slice(0, cursorPos)
+ '<a href="" title=""></a>'
+ this.value.slice(cursorPos)
return false; // Prevent any default browser behaviour
}
};
答案 1 :(得分:0)
我不确定Ctrl-Alt-L,但有明确的方法可以做到这一点。例如:
<textarea name="MyText" id="MyText" onKeyPress="handleKey(this);"
onKeyDown="CaptureKeyDown(this);"></textarea>
<script>
function handleKey(ta) {
if (event.keyCode == 12) { // Ctrl-L
// Do your insert here
}
}
</script>
比这更复杂。在http://www.boltbait.com/htmleditor/查看这个HTML编辑器(用HTML和JavaScript编写)(源代码可以在那里下载)。
编辑:哎呀!我没有看到你的jquery标签。