2

次の問題があります。オートコンプリートとして機能するテキスト入力フィールドでは、返される提案の一部がそれよりも枯れています。問題は、フィールドを離れたときに発生します。IE では、テキスト カーソルは提案された文字列の末尾に配置されるため、実際には文字列の最後の部分しか表示されません。そこで、次のコードを使用してこれを修正しました。IE6 では動作しますが、IE8 では動作せず、フィールドが常に選択され、ページ上で何も選択できません。

私の質問は、入力フィールドを離れた後、カーソルを入力フィールドの先頭に移動する正しい方法は何ですか?

$('#myAutocompleter').blur(関数(){
  textRange = this.createTextRange();
  textRange.collapse(真);
  textRange.select();
});

(使用コードはjQueryで書いています。)

4

3 に答える 3

3

あなたが探しているのは、テキスト範囲のメソッド.moveStartとメソッドだと思います:.moveEnd

$('#myAutocompleter').blur(function(){
  textRange = this.createTextRange();
  textRange.collapse(true);
  textRange.moveEnd('character',0);
  textRange.moveStart('character',0);
  textRange.select();
});

(IE8で機能テスト済み)

于 2009-12-15T01:17:44.123 に答える
0

このようなものに応じて、何かのトップ/ボトムを見たいという同様の状況がありました。jQuery scrollTo プラグインを使用しました

).scrollTo('100%')

).scrollTo('0%')

編集1:私はこのフィールドでそれを使用しています:

<textarea cols="57" rows="2" class="cssTextarea cptEntryArea"></textarea>

このコードで:

  $(".cptEntryArea").change(function()
        {
           $(this).scrollTo('0%');
   });
于 2009-10-28T14:03:11.750 に答える
0

あなたの質問を理解しているかどうかはわかりませんが、IE にはページでのテキスト選択を処理するための独自のメソッド セットがあるため、動作が異なります。

チュートリアルについては、こちらをご覧ください: http://www.quirksmode.org/dom/range_intro.html

互換性についてはこちら: http://www.quirksmode.org/dom/w3c_range.html

それが問題でない場合は、マウスアップまたはクリック イベント チェックをぼかし内で実行し、そこに選択コードを配置してみてください。おそらく、選択した場所に配置する前に、選択が入力フィールドから離れてしまうでしょう。

于 2009-10-25T15:15:24.897 に答える