php - 在插入符号处插入而不是替换整个文本区域
问题描述
我正在修改第三方应用程序,在该应用程序中,我有以下代码:
<?php if (!$this->allowEditor) { ?>
$('#ticket_message').val(data.text);
<?php } else { ?>
jInsertEditorText(data.text, 'ticket_message');
<?php } ?>
在我需要修改的页面上,它正在运行该if
语句。它目前所做的是替换 textarea 的内容,#ticket_message
但还有一种方法可以将其插入 textarea 而不覆盖现有内容。
如果将它插入到用户停止输入的最后一个位置,那就更好了。
例如 > 文本区域:
Lorem ipsum dolar sit met.
INSERT IT HERE BECAUSE THIS IS THE LAST PLACE THE TEXT CURSOR(caret) WAS SET
Lorem ipsum dolar sit met.
解决方案
您可以附加值
$('#ticket_message').append(new_val);
要插入插入符号,您可以使用以下功能
function insertAtCaret(areaId,text) {
var txtarea = document.getElementById(areaId);
var scrollPos = txtarea.scrollTop;
var strPos = 0;
var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ?
"ff" : (document.selection ? "ie" : false ) );
if (br == "ie") {
txtarea.focus();
var range = document.selection.createRange();
range.moveStart ('character', -txtarea.value.length);
strPos = range.text.length;
}
else if (br == "ff") strPos = txtarea.selectionStart;
var front = (txtarea.value).substring(0,strPos);
var back = (txtarea.value).substring(strPos,txtarea.value.length);
txtarea.value=front+text+back;
strPos = strPos + text.length;
if (br == "ie") {
txtarea.focus();
var range = document.selection.createRange();
range.moveStart ('character', -txtarea.value.length);
range.moveStart ('character', strPos);
range.moveEnd ('character', 0);
range.select();
}
else if (br == "ff") {
txtarea.selectionStart = strPos;
txtarea.selectionEnd = strPos;
txtarea.focus();
}
txtarea.scrollTop = scrollPos;
}
推荐阅读
- django - 如何在 Django Rest Framework 中添加两个不同序列化程序的数据作为参考传递
- python - Python 迭代工具
- android - Image Cropper 无法正常工作 - 为什么?
- python-3.x - 无监督 CNN keras 模型
- node.js - Docker:从一个容器到其他容器的http请求停滞不前
- spatstat - 'spatstat' 'envelope'-object 不能由 dclf.test 评估(错误:错误的行数)
- shell - 在 Jenkins Shell 脚本中设置一个新的环境变量
- selenium - 通过 Canvas 标签实现图形自动化
- compiler-errors - Msys2 -> f951.exe:致命错误:在第 2 行第 1 列读取模块“...”:意外 EOF
- java - 数据存储查询超时