【发布时间】:2020-06-15 12:15:33
【问题描述】:
我使用 jquery 和电子制作了一个文本编辑器。我希望能够让文本编辑器自动完成 HTML 标记。
我想要的是当用户键入一个标签时,例如 <tag> 一个结束 </tag> 被插入。我计划通过检测何时键入> 并将字符保存到< 作为变量来做到这一点。然后我会在</ 和> 之间插入这些字符。但是我不确定如何执行此操作。
我有以下代码:
function setCaretPosition(elemId, caretPos) {
var el = document.getElementById(elemId);
el.value = el.value;
if (el !== null) {
if (el.createTextRange) {
var range = el.createTextRange();
range.move('character', caretPos);
range.select();
return true;
} else {
if (el.selectionStart || el.selectionStart === 0) {
el.focus();
el.setSelectionRange(caretPos, caretPos);
return true;
} else {
el.focus();
return false;
}
}
}
}
$("#input").on("keydown", function(e) {
if (e.key === ">") {
$("#input").focus();
document.execCommand('insertHTML', true, '></>');
var cursorPosition = $('#input').prop("selectionStart");
setCaretPosition('input', cursorPosition - 3);
}
});
和
<textarea class="form-control" id="input" spellcheck="false" wrap="off" placeholder="Get Creative!"></textarea>
有没有办法做到这一点?
【问题讨论】:
标签: javascript jquery html text textarea