jquery add&#39; <li> </li>&#39;并将光标放在&#39; <li> {cursor here}&#39; </li>的末尾

时间:2014-08-21 03:59:47

标签: jquery

示例在这里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(); 我花了很多时间找到解决方案......哦

2 个答案:

答案 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){