作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将插入符号索引处的字符值更改为“[br]”。
我的意思的例子:假设我们有一个文本框,用户输入一些文本,过了一会儿,他记起自己忘记了开始新行,因此他将插入符移动到他想要新行的位置,然后按 Return\Enter。我想仅使用 javascript 添加字符串“[br]”。这是我现在得到的:
<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;
}
}
此代码在文本区域的末尾添加“[br]”,而不是插入符号所在的位置。我真的不知道如何获取插入符的索引,所以我只能转换 text
var 到字符数组中,然后在插入符号的索引处添加“[br]”。那么有人知道如何让我的代码按照我想要的方式工作吗?或者知道如何获取插入符位置?
PS:插入符号我的意思是:
谢谢你:)
最佳答案
感谢@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();
}
}
关于javascript - 如何将插入符号所在位置的值设置为一个值 [Javascript],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30038077/
我是一名优秀的程序员,十分优秀!