フォーカス機能を使用してテキスト フィールドにカーソルを設定しようとしています。 いくつか調査しましたが、提供されている解決策はどれも 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 が指摘したように、これは実行キューの最後にプッシュするのに十分です。