Google Chromeで入力テキストの末尾にカーソル位置を設定する方法 質問する

Google Chromeで入力テキストの末尾にカーソル位置を設定する方法 質問する

フォーカス機能を使用してテキスト フィールドにカーソルを設定しようとしています。 いくつか調査しましたが、提供されている解決策はどれも Google Chrome では機能しないようです。 Internet Explorer と Firefox では、この解決策は正常に機能します。

js:

$('#Search').focus(function() {
  var SearchInput = $('#Search');
  var strLength= SearchInput.val().length;
  SearchInput.focus();
  SearchInput[0].setSelectionRange(strLength, strLength);
});

HTML:

<input type="text" id="Search" value="Hello World" />

私のリンクはこちらjsfiddle

これを Google Chrome でも動作させる方法はありますか?

ベストアンサー1

入力にフォーカスすると、カーソルが配置される前にフォーカス イベントが発生するようです。ハッキーな回避策としては、次のように setTimeout を使用することです。

$('#Search').focus(function() {
    setTimeout((function(el) {
        var strLength = el.value.length;
        return function() {
            if(el.setSelectionRange !== undefined) {
                el.setSelectionRange(strLength, strLength);
            } else {
                $(el).val(el.value);
            }
    }}(this)), 0);
});

このフィドルを試してみてください: http://jsfiddle.net/esnvh/26/

タイムアウトを 0 ミリ秒に編集しました。@SparK が指摘したように、これは実行キューの最後にプッシュするのに十分です。

おすすめ記事