Javascript 选择开始忽略Chrome中文本区域中的新行/换行符

Javascript 选择开始忽略Chrome中文本区域中的新行/换行符,javascript,jquery,google-chrome,Javascript,Jquery,Google Chrome,我正在尝试将文本插入光标位置的文本区域或替换选定的文本。代码的工作原理是插入文本,如果选择了文本,则替换文本 问题是,如果用户先插入多个换行符,然后尝试插入文本。然后,它将文本插入到第二行,而不是在光标点插入文本。例如,如果用户插入换行符并在第5行结束,然后单击输入以插入文本,则文本将插入第2行 var holdFocus; function updateFocus(x) { holdFocus = x; } 触发原因: <textarea onFocus="updateFocus(

我正在尝试将文本插入光标位置的文本区域或替换选定的文本。代码的工作原理是插入文本,如果选择了文本,则替换文本

问题是,如果用户先插入多个换行符,然后尝试插入文本。然后,它将文本插入到第二行,而不是在光标点插入文本。例如,如果用户插入换行符并在第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>
点击以下按钮触发:

<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。我确信直到几周前,这种情况才发生。

使用香草JavaScript 发件人:

注意:目前,在元素上使用.val()会从浏览器报告的值中删除回车字符。但是,当通过XHR将此值发送到服务器时,会保留回车(或由未将回车包含在原始值中的浏览器添加)。使用valHook可以解决此问题,如下所示:
$.valHooks.textarea={
get:函数(elem){
返回元素值。替换(/\r?\n/g,“\r\n”);
}
};

类似于以下内容的内容就足够了:

var-holdFocus;
函数updateFocus(x){
holdFocus=x;
}
函数InsertCodeInTextArea(文本){
var tav=holdFocus.value;
holdFocus.value=tav.substring(0,holdFocus.selectionStart)+
text.split(“%lb%”)。join(“\r\n”)+
tav.子字符串(holdFocus.selectionEnd,tav.length);
}
foo
酒吧
巴兹
使用普通JavaScript 发件人:

注意:目前,在元素上使用.val()会从浏览器报告的值中删除回车字符。但是,当通过XHR将此值发送到服务器时,会保留回车(或由未将回车包含在原始值中的浏览器添加)。使用valHook可以解决此问题,如下所示:
$.valHooks.textarea={
get:函数(elem){
返回元素值。替换(/\r?\n/g,“\r\n”);
}
};

类似于以下内容的内容就足够了:

var-holdFocus;
函数updateFocus(x){
holdFocus=x;
}
函数InsertCodeInTextArea(文本){
var tav=holdFocus.value;
holdFocus.value=tav.substring(0,holdFocus.selectionStart)+
text.split(“%lb%”)。join(“\r\n”)+
tav.子字符串(holdFocus.selectionEnd,tav.length);
}
foo
酒吧
巴兹

@Matt-如前所述;jQuery
val()
正在剥离回车符。我用纯JS处理的乱七八糟的程序可能也不能正常运行,但这只是一个开始;-)我通常不应该在凌晨4点做这件事。谢谢弗雷德,非常感谢,但没有乐趣。如果我在foo之前使用了一些换行符,它仍然不起作用。@Matt-添加了新信息。这是一只虫子
selectionStart
将忽略换行符。谢谢@Fred。令人困惑的是,为什么它几周前才开始这么做,而且早在09年就有报道了。@Matt-如前所述;jQuery
val()
正在剥离回车符。我用纯JS处理的乱七八糟的程序可能也不能正常运行,但这只是一个开始;-)我通常不应该在凌晨4点做这件事。谢谢弗雷德,非常感谢,但没有乐趣。如果我在foo之前使用了一些换行符,它仍然不起作用。@Matt-添加了新信息。这是一只虫子
selectionStart
将忽略换行符。谢谢@Fred。令人困惑的是,为什么它几周前才开始这样做,而这在09年就被报道了。
<input class="input" type="button" name="LODCTRRAPPA" value ="LODCTRRAPPA" onClick="InsertCodeInTextArea('Location: %lb%Onset: %lb%Duration: %lb%Course: %lb%Type of pain/symptom: %lb%')"/>