我 正在 尝试 将 文本 插入 到 文本 区域 中 光标 所在 的 位置 , 或者 替换 选定 的 一 段 文本 。 该 代码 的 工作 原理 是 插入 文本 , 如果 选定 了 一 段 文本 , 则 替换 该 文本 。
问题 是 , 如果 用户 先 插入 几 个 换行符 , 然后 尝试 插入 文本 。 然后 不是 在 光标 所在 的 位置 插入 文本 , 而是 在 第 二 行 插入 文本 。 因此 , 例如 , 如果 用户 插入 换行符 并 在 第 5 行 结束 , 然后 单击 输入 插入 文本 , 则 文本 将 插入 第 2 行 。
var holdFocus;
function updateFocus(x) {
holdFocus = x;
}
中 的 每 一 个
触发 者 :
<textarea onFocus="updateFocus(this)" cols="53" rows="10" name="entry" id="report" style="width: 98%;"></textarea>
格式
然后 插入 文字 :
function InsertCodeInTextArea(text){
var tav = $(holdFocus).val(),
strPos = $(holdFocus)[0].selectionStart;
var endPos = $(holdFocus)[0].selectionEnd;
front = (tav).substring(0,strPos),
back = (tav).substring(endPos,tav.length);
var textValue = text.split("%lb%").join("\r\n");
$(holdFocus).val(front+ textValue + back);
}
格式
通过 单击 以下 项 触发 :
<input class="input" type="button" name="LODCTRRAPPA" value ="LODCTRRAPPA" onClick="InsertCodeInTextArea('Location: %lb%Onset: %lb%Duration: %lb%Course: %lb%Type of pain/symptom: %lb%')"/>
格式
这个 问题 似乎 只 发生 在 Chrome 浏览 器 。 Safari 和 FF 还好 。 没有 测试 IE 。 我 敢 肯定 , 这 也 没有 发生 , 直到 几 个 星期 前 。
1条答案
按热度按时间fjaof16o1#
# 使用 普通 JavaScript
从 jQuery docs on
val()
开始 :注意 : 目前 , 在 元素 上 使用 . val ( ) 会 从 浏览 器 报告 的 值 中 删除 回车 符 。 但是 , 当 此 值 通过 XHR 发送 到 服务 器 时 , 回车 符 会 被 保留 ( 或 由 不 将 其 包含 在 原始 值 中 的 浏览 器 添加 ) 。 此 问题 的 解决 方法 可以 使用 valHook , 如下 所 示 :
$.valHooks.textarea = { get: function( elem ) { return elem.value.replace( /\r?\n/g, "\r\n" ); } };
下面 的 代码 就 足够 了 :
第 一 个
# 更新
It's a bug! See productforums.google.com
... 如果 您 单击 退出 文本 区域 , 然后 单击 返回 , 然后 单击 按钮 , 错误 现在 消失 了 , 它 工作 。
测试 了 我 的 代码 片段 , 它 确实 工作 后 , 点击 ( 失去 焦点 ) , 然后 点击 回来 ( 重新 获得 焦点 ) 。
这 显然 会 导致 所 做 的 任何 选择 丢失 , 并且 要求 用户 这样 做 是 不 切 实际 的 。
如果 我 找到 一 个 程序 化 的 解决 方法 , 我 会 更新 这个 答案 。