31

フォームにテキストエリアとボタンがあります。textareaには、すでにテキストが含まれている場合があります。ボタンをクリックしたときに、カーソルをテキスト領域の最後の位置に移動させたいのですが。

これは可能ですか?

4

7 に答える 7

34

xgMzの答えは私にとって最高でした。ブラウザについて心配する必要はありません。

var html = $("#MyTextArea").val();
$("#MyTextArea").focus().val("").val(html);

そして、これは私が次回のためにこれを行うために書いた簡単な jQuery 拡張機能です。

; (function($) {
    $.fn.focusToEnd = function() {
        return this.each(function() {
            var v = $(this).val();
            $(this).focus().val("").val(v);
        });
    };
})(jQuery);

次のように使用します。

$("#MyTextArea").focusToEnd();
于 2012-08-01T10:06:06.687 に答える
4

これを使用できますhttps://github.com/DrPheltRight/jquery-caret

$('input').caretToEnd();
于 2013-08-13T17:52:19.687 に答える
3

これは、onclickまたはその他のイベント内のテキストエリアに使用するものであり、FireFoxおよびIE 7&8では正常に機能するようです。カーソルをテキストの前ではなく最後に配置します。

this.value = "some text I want to pre-populate";
this.blur();
this.focus();
于 2012-09-12T15:19:22.467 に答える
2

マウス フォーカスを設定し、カーソルを入力の最後に移動します。すべてのブラウザで機能します。ここでは単純なロジックです。

input.focus();
tmpStr = input.val();
input.val('');
input.val(tmpStr);
于 2013-06-27T09:51:35.077 に答える
0

デフォルト値をサポートするために @mkaj 拡張子を少し変更しました

; (function($) {
    $.fn.focusToEnd = function(defaultValue) {
        return this.each(function() {
            var prevValue = $(this).val();
            if (typeof prevValue == undefined || prevValue == "") {
                prevValue = defaultValue;
            }
            $(this).focus().val("").val(prevValue);
        });
    };
})(jQuery);

// See it in action here
$(element).focusToEnd("Cursor will be at my tail...");
于 2014-02-12T23:57:52.773 に答える