8

フォーカスを置いたときにカーソルをテキストボックスの最後に移動させたいテキストボックスがあります。

出続ける解決策はただ

this.value = this.value

私はonclickの簡単な方法でこれを試しました:

function InputClicked(element) {
    element.className = "inputfocused";
    element.value = element.value;
}

しかし、これで奇妙なことに、テキストボックスの最後に移動してから最初にジャンプするようです。

4

3 に答える 3

14

要素に焦点を合わせ、キャレットの位置を設定する必要があります

このJSFiddleは、それがどのように機能するかを示しています。この例では簡単にするためにjQueryを使用していますが、必要に応じて完全に省略できます。setSelectionRange関数はとにかくDOM関数です。

一般的に、これを行います。

input.focus();
input.setSelectionRange(inputValueLength, inputValueLength);

入力とその値の長さの取得は、DOM機能またはライブラリ関数(jQueryの場合のように)を使用して取得できます。

入力値の長さが必要ですか?

他のブラウザではテストしていませんが、Chromeで実行すると、実際の位置よりも大きく設定でき、キャレットが最後に配置されます。だから次のようなもの:

input.setSelectionRange(1000,1000);

期待どおりに機能します(テキストが1000文字より短い場合。:)

:この機能は、IE8以前ではサポートされていません。最も使用されているブラウザのすべての最新バージョンがそれをサポートしています。IEの古いバージョンでは、テキスト範囲を使用します。

于 2012-08-08T08:55:08.470 に答える
5

プロパティまたは入力のメソッドselectionStartを使用して、キャレットを移動する必要があります。ただし、IE < 9 はこれらをサポートしていないため、これらのブラウザーでは入力のメソッドを使用する必要があります。selectionEndsetSelectionRange()createTextRange()

コード:

function moveCaretToEnd(el) {
    el.focus();
    if (typeof el.selectionStart == "number") {
        el.selectionStart = el.selectionEnd = el.value.length;
    } else if (typeof el.createTextRange != "undefined") {
        var range = el.createTextRange();
        range.collapse(false);
        range.select();
    }
}
于 2012-08-08T09:11:30.187 に答える
2

シンプルで機能的 100%

1.Focus
2.Take the value
3.Empty It
4.Put the value back 



        $("#catg_name").focus();
        var value = $("#catg_name").val();
        $("#catg_name").val('');
        $("#catg_name").val(value);
于 2015-11-14T06:18:37.153 に答える