将文本插入光标所在的文本区域
Insert Text Into Textarea Where Cursor Is
我有下面的JS,它在当前文本区域中的任何内容的末尾将一些内容插入到文本区域中。这一切都适用于以下代码:
<script>
if (opener.document.post.sMessage.createTextRange && opener.document.post.sMessage.caretPos) {
var caretPos = opener.document.post.sMessage.caretPos;
caretPos.text = ''n'n![](http://example.com/image.png)';
} else {
opener.document.post.sMessage.value += ''n'n![](http://example.com/image.png)';
}
self.close(); //close popup
</script>
如何修改以将内容插入光标所在的文本区域(而不是仅位于现有文本的末尾)?
没有足够的声誉发表评论,但@GMKHussain的回答中有一个拼写错误,我相信。
我认为在+ elem.value.substring(endPos, elem.value.length);
endPos行中,应将其替换为_endSelection:+ elem.value.substring(_endSelection, elem.value.length);
使用VanillaJS 的解决方案
function addContentAtCursorFunc( elem, newContent ) {
if (elem.selectionStart || elem.selectionStart == '0') {
let _startSelection = elem.selectionStart;
let _endSelection = elem.selectionEnd;
elem.value = elem.value.substring(0, _startSelection)
+ newContent
+ elem.value.substring(endPos, elem.value.length);
} else {
elem.value += newContent;
}
}
const button = document.getElementById('myBtn');
const textarea = document.getElementById('myTextarea');
button.addEventListener('click', event => {
addContentAtCursorFunc( textarea , " *| I'M NEW CONTENT! |* ")
return false
});
<textarea id="myTextarea" cols="40" rows="3">Select some of this text and then hit the button.</textarea>
<button id="myBtn">Type some stuff</button>
相关文章:
- onkeyup无法动态创建多个文本区域
- 具有所有样式的文本正在复制到可编辑文本区域
- 在文本区域POST后解码JSON
- 在文本区域中使用jQuery.text()保持换行符
- ng在下拉列表和文本区域提交
- 将文本插入光标所在的文本区域
- 离开页面导航后保留文本区域内容
- Javascript-在文本区域中断,但不在段落中中断
- 当选择值x时,Javascript需要在正确的位置显示文本区域,从而循环通过具有选择选项的表单
- 测试文本区域中的特定文本格式
- 文本编辑后,append函数不适用于文本区域
- 如何在ReactJs中链接下拉列表和文本区域
- I'我试图在文本区域中进行特定的输入,调用特定的javascript函数,但没有成功;不起作用
- 使用JSON文件中的变量(字符串)填充文本区域
- JavaScript-如果以前不存在文本,如何从文本区域删除新行
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- 如何为动态创建的文本区域中输入的值更新ng模型
- 延迟高亮显示文本区域中的文本
- 将字母添加到文本区域的末尾
- TinyMCE在新添加的文本区域