簡體   English   中英

Javascript:將插入符號移至最后一個字符

[英]Javascript: Move caret to last character

我有一個文本區域,當我單擊它時,我想將插入符號移動到最后一個字符,所以Something[caret]

function moveCaret(){
     // Move caret to the last character
}
<textarea onclick="moveCaret();">
     Something
</textarea>

據我所知,使用TextRange對象可以做到這一點,但是我真的不知道如何使用它

編輯:我很想只看純JavaScript解決方案,所以請不要圖書館。

以下功能將在所有主要瀏覽器中適用於文本區域和文本輸入:

function moveCaretToEnd(el) {
    if (typeof el.selectionStart == "number") {
        el.selectionStart = el.selectionEnd = el.value.length;
    } else if (typeof el.createTextRange != "undefined") {
        el.focus();
        var range = el.createTextRange();
        range.collapse(false);
        range.select();
    }
}

但是,用戶每次單擊文本區域時都不應執行此操作,因為用戶將無法使用鼠標移動插入符號。 而是在文本區域獲得焦點時執行此操作。 Chrome中還有一個問題,可以通過以下方法解決:

完整示例: http : //www.jsfiddle.net/ghAB9/3/

HTML:

<textarea id="test">Something</textarea>

腳本:

var textarea = document.getElementById("test");
textarea.onfocus = function() {
    moveCaretToEnd(textarea);

    // Work around Chrome's little problem
    window.setTimeout(function() {
        moveCaretToEnd(textarea);
    }, 1);
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM