我想将插入符号索引处的char值更改为“[br]”。
我的意思是:
假设我们有一个文本框,一个用户输入了一些文字,过了一段时间他记得他忘了开始一条新线,所以他将他的插入符移动到他想要换行的位置并按回车键\ enter。我想在这一点上添加字符串“[br]”,仅使用javascript。这是我现在得到的:
<textarea id="textarea" onkeydown="javascript:DoLine();"></textarea>
这是DoLine()
函数:
function DoLine() {
if (event.keyCode == 13) {
var text = document.getElementById('textarea').value;
text += "[br]";
if (text.indexOf("[br]") != text.length) {
var getTextAfter = text[text.lastIndexOf("[br]")] += "\r";
}
document.getElementById('textarea').value = text;
}
}
此代码在插入符号所在的textarea instade末尾添加“[br]”。我真的不知道如何获得插入符号的索引,所以我可以将text
var转换为字符数组,然后在插入符号的索引处添加“[br]”。
所以任何人都知道如何让我的代码以我想要的方式工作?或任何想法如何获得插入位置?
PS:通过插入我的意思是:
谢谢你:)。
答案 0 :(得分:1)
感谢@Tyr我找到了答案,这个函数修复了它:
function insertTextAtCursor(el, text) {
var val = el.value, endIndex, range;
if (typeof el.selectionStart != "undefined" && typeof el.selectionEnd != "undefined") {
endIndex = el.selectionEnd;
el.value = val.slice(0, el.selectionStart) + text + val.slice(endIndex);
el.selectionStart = el.selectionEnd = endIndex + text.length;
} else if (typeof document.selection != "undefined" && typeof document.selection.createRange != "undefined") {
el.focus();
range = document.selection.createRange();
range.collapse(false);
range.text = text;
range.select();
}
}