将光标设置在字符串的末尾?

时间:2015-08-17 09:22:28

标签: javascript

当我用另一个字符串替换字符串时,光标将移动到文本中字符串的开头。光标可以移动到最后而不是字符串的开头吗?

的index.jsp

var val1=request.responseText;
var text=document.getElementById("para").innerHTML;
if(val1!="true")
{
    var afterplace=text.replace("good",val1);
    document.getElementById("para").innerHTML=afterplace;
}

更换后,光标出现在我希望它结束​​的单词的开头。

2 个答案:

答案 0 :(得分:1)

考虑使用以下函数将光标设置在contenteditable元素的末尾:

function setEndOfContenteditable(contentEditableElement)
{
    var range,selection;
    if(document.createRange)//Firefox, Chrome, Opera, Safari, IE 9+
    {
        range = document.createRange();
        range.selectNodeContents(contentEditableElement);
        range.collapse(false);
        selection = window.getSelection();
        selection.removeAllRanges();
        selection.addRange(range);
    }
    else if(document.selection)//IE 8 and lower
    { 
        range = document.body.createTextRange();
        range.moveToElementText(contentEditableElement);
        range.collapse(false);
        range.select();
    }
}

Working DEMO

完整摘录:

var val1="testingtextgood";
var text=document.getElementById("para").innerHTML;
if(val1!="true")
{
    var afterplace=text.replace("good",val1);
    document.getElementById("para").innerHTML=afterplace;
    document.getElementById("para").focus()
    setEndOfContenteditable(document.getElementById("para"))
}

function setEndOfContenteditable(contentEditableElement)
{
    var range,selection;
    if(document.createRange)//Firefox, Chrome, Opera, Safari, IE 9+
    {
        range = document.createRange();
        range.selectNodeContents(contentEditableElement);
        range.collapse(false);
        selection = window.getSelection();
        selection.removeAllRanges();
        selection.addRange(range);
    }
    else if(document.selection)//IE 8 and lower
    { 
        range = document.body.createTextRange();
        range.moveToElementText(contentEditableElement);
        range.collapse(false);
        range.select();
    }
}

答案 1 :(得分:0)

使用此代码: -

var val1=request.responseText;
var text=document.getElementById("para").innerHTML;

if(val1!="true"){
    var afterplace=text.replace("good",val1);
    document.getElementById("para").innerHTML=afterplace;
    document.getElementById("para").focus();
    var val = document.getElementById("para").value;
    document.getElementById("para").value = '';
    document.getElementById("para").value = val;
}

它适用于我。