20

textarea要素の最後にカーソルを設定する方法はありますか?Firefox 3.6を使用していますが、IEやChromeで動作する必要はありません。ここでの関連するすべての回答はonfocus()イベントを使用しているようですが、ユーザーが要素内の任意の場所をクリックすると、textareaFirefoxがカーソル位置をそこに設定するため、役に立たないようです。textarea最後の部分が表示されるように(最後に何かを追加しやすくするために)長いテキストを表示します。

フレームワークやライブラリはありません。

4

8 に答える 8

39

多くの方法があるかもしれません、例えば

element.focus();
element.setSelectionRange(element.value.length,element.value.length);

http://jsfiddle.net/doktormolle/GSwfW/

于 2012-04-14T23:39:12.633 に答える
5

最初にjQueryソリューションを見ずにjavascriptを使用してから長い時間が経ちました...

そうは言っても、javascript を使用する最善の方法は、テキストエリアがフォーカスされたときに現在テキストエリアにある値を取得し、テキストエリアの値を取得した値に設定することです。これは常に jQuery で次のように機能します。

$('textarea').focus(function() {
    var theVal = $(this).val();
    $(this).val(theVal);
});

プレーンな JavaScript の場合:

var theArea = document.getElementByName('[textareaname]');

theArea.onFocus = function(){
    var theVal = theArea.value;
    theArea.value = theVal;
}

私は間違っているかもしれません。ちょっとさびた。

于 2012-04-14T23:48:02.110 に答える
3

ここにそのための関数があります

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();
    }
}

[デモ] [ソース]

于 2012-04-14T23:51:41.207 に答える
2
textarea.focus()
textarea.value+=' ';//adds a space at the end, scrolls it into view
于 2012-04-15T05:39:23.767 に答える
1
(this.jQuery || this.Zepto).fn.focusEnd = function () {
    return this.each(function () {
        var val = this.value;
        this.focus();
        this.value = '';
        this.value = val;
    });
};
于 2013-10-12T13:26:23.997 に答える