10

私はいくつかのオートコンプリートコードを扱っています。イベントハンドラsetSelectionRange()で完了したテキストを選択するために使用されます。oninput少なくとも Firefox 14 では動作しますが、Chrome(6、17) では動作しません。

問題を示す単純化されたコード スニペットは次のようになります。

<input type='text' oninput='select()' />
function select(e){
    var s = this.value;
    if (s.length)
        this.setSelectionRange(s.length-1, s.length);
}

クロムでコードをデバッグしたところ、実行直後にテキストが選択されていたことがわかりましたsetSelectionRange()が、後で選択が消えました。

onclick次のように、ハンドラーをの代わりにバインドする場合oninput:

<input type='text' onclick='select()' />

その後、両方のブラウザが正常に動作します。

Chromeで選択を機能させるための手がかりを教えてください。

4

4 に答える 4

18
于 2012-07-30T15:04:45.837 に答える
1

    
    
    var $input = document.getElementById('my_id');
    
    $input.onfocus = function () {
       $input.setSelectionRange(0, 7);
    }
    $input.focus();
    
    
<input type='text' id='my_id' value="My text for example." />

于 2019-05-17T09:41:58.213 に答える