5

私がやろうとすると.focus()、入力要素にフォーカスを設定し、値の最後の文字の後にカーソルが表示されることを期待しています。そして私はそれをIEで見ます。

サファリ/クローム入力でフォーカスを取得し、すべてのテキストが選択されます。Firefox / Operaでは入力にフォーカスがありますが、カーソルは最初にあります。

それを防ぎ、すべてのブラウザで正しい動作を実現するにはどうすればよいですか?

例はここにあります:http://jsbin.com/ozojol/edit#javascript,html

PS。focus().val('').val(value)メソッドがIEで機能しない...他にどのような回避策がありますか?

4

3 に答える 3

7

ほとんどのブラウザで入力selectionStartとプロパティを使用でき、IE <9でselectionEndいくつかの厄介なものを使用できます。これは、同様の質問への回答から適応されたコードです。TextRange

デモ: http: //jsbin.com/azapuy

コード:

function moveCaretToEnd(el) {
    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();
    }
}

var input = $('#i')[0];
input.focus();
moveCaretToEnd(input);
于 2012-07-02T15:51:31.913 に答える
1

カレットを要素内のコンテンツの最後に移動するための優れた軽量プラグインがあります。jQuery Caret

ライブデモ

于 2012-07-02T15:42:41.793 に答える
0

唯一の一般的な動作は、select()であり、すべての主要なブラウザで入力テキストを選択します(すべてのブラウザで機能するかどうかを確認できません)。

于 2012-07-02T15:56:01.093 に答える