示例在这里http://jsfiddle.net/abmjd2ze/4/
<textarea rows="12" cols="10">Go to the end of text and press Enter.</textarea>
jquery的
$('textarea').keydown(function(ev){
if(ev.keyCode == 13){
var caretPos = this.selectionStart;//detects cursor position before Enter
var textAreaTxt = this.value;//whole text of the textarea
var txtToAdd = "\n<li></li>";
$(this).val(textAreaTxt.substring(0, caretPos) + txtToAdd + textAreaTxt.substring(caretPos) );//set new value of textbox
var sePos = caretPos + txtToAdd.length;//Also detects some position
this.setSelectionRange(sePos,sePos-5);
}//if(ev.keyCode == 13){
});//$('textarea').keydown(function(ev){
问题在于this.setSelectionRange(sePos,sePos-5);
结果我得到了
<li>
{cursor here}</li>
但想要
<li>{cursor here}
</li>
如果更改为this.setSelectionRange(sePos,sePos-6);
然后得到
<li
{cursor here}></li>
是否可以添加一些短代码以将光标置于必要位置?如果长代码那么最好离开,因为它是
解决方案
哦,非常简单的解决方案
只需要添加ev.preventDefault();
我花了很多时间找到解决方案......哦
答案 0 :(得分:0)
试试这个兄弟,它有效......
只需添加ev.preventDefault();
$('textarea').keydown(function(ev){
if(ev.keyCode == 13){
var caretPos = this.selectionStart;
var textAreaTxt = this.value;
var txtToAdd = "\n<li></li>";
$(this).val(textAreaTxt.substring(0, caretPos) + txtToAdd + textAreaTxt.substring(caretPos) );//set new value of textbox
var sePos = caretPos + txtToAdd.length;
this.setSelectionRange(sePos,sePos-5);
ev.preventDefault(); //<--------------------Add Here...
}//if(ev.keyCode == 13){
});//$('textarea').keydown(function(ev){
希望它能起作用..
答案 1 :(得分:0)
出现非常简单的解决方案
$('textarea').keydown(function(ev){
if(ev.keyCode == 13){
//just need to add this code
ev.preventDefault();
var caretPos = this.selectionStart;//detects cursor position before Enter
var textAreaTxt = this.value;//whole text of the textarea
var txtToAdd = "\n<li></li>";
$(this).val(textAreaTxt.substring(0, caretPos) + txtToAdd + textAreaTxt.substring(caretPos) );//set new value of textbox
var sePos = caretPos + txtToAdd.length;//Also detects some position
this.setSelectionRange(sePos,sePos-5);
}//if(ev.keyCode == 13){
});//$('textarea').keydown(function(ev){