我有一个带有的表单。
是否有一种方式,当在此文本区域内按Enter键时,在光标位置插入换行符(
)的HTML代码?
我只需要这个在IE中能够正常工作。
<textarea class="input height120 elastic span12" name="details" id="details" onkeyup="countCharLimit(event)" onpaste="countCharLimit(event)"></textarea>
我有一个带有的表单。
是否有一种方式,当在此文本区域内按Enter键时,在光标位置插入换行符(
)的HTML代码?
我只需要这个在IE中能够正常工作。
<textarea class="input height120 elastic span12" name="details" id="details" onkeyup="countCharLimit(event)" onpaste="countCharLimit(event)"></textarea>
试试这个:
$('textarea').keypress(function (e){
if(e.keyCode == 13){
$('textarea').val($('textarea').val()+"<br />");
}
});
<br />
,经过进一步研究,我找到了这个解决方案:$('textarea').keypress(function (e){
if(e.keyCode == 13){
e.preventDefault();
this.value = this.value.substring(0, this.selectionStart)+"<br />"+"\n";
}
});
这里有一个相关的 fiddle 链接
参考来源: 使用jQuery向文本域中插入文本
再次编辑: 看起来 OP 想要在文本末尾也清空文本,所以我相应地更新了我的代码(其他人看到这个:查看我相关 fiddle 的 第一次编辑,以了解你想要保留剩余文本的情况)。
首先你需要找到插入符的位置,如下所示:
var caretPos = function() {
var el = $("#details").get(0);
var pos = 0;
if('selectionStart' in el) {
pos = el.selectionStart;
} else if('selection' in document) {
el.focus();
var Sel = document.selection.createRange();
var SelLength = document.selection.createRange().text.length;
Sel.moveStart('character', -el.value.length);
pos = Sel.text.length - SelLength;
}
return pos;
}
var textofDetails = $("#details").val();
jQuery("#detail").val(textofDetails.substring(0, caretPos) + "<br/>" + textofDetails.substring(caretPos) );
function replaceNewLine(){
jQuery("#detail").val().replace(/\\n/g, "<br />");
}
source: so - here
<br>
标记出现在光标位置... 我认为至少是这样,因为他们在提问时不是很明确,此外还希望删除光标位置后面的文本... - benomatis