2

更新パネルに入力 (テキスト フィールド) があり、テキストが変更されるたびに自動ポストバックされます。同じテキスト フィールドにフォーカスを維持できますが、document.getElementById('myTextField').focus() を呼び出した後に表示されるテキスト ハイライトを取り除くことができません。この解決策が最も正確なようでした:

if (window.getSelection) {
    window.getSelection().removeAllRanges();
} else if (document.selection) {
    document.selection.empty();
}

しかし、それには 1 つの問題があります。入力はフォーカスされたままですが、テキストを書くことができません。書く前にそれをクリックする必要があります。

4

2 に答える 2

1

フォーカス後に値をリセットすると、それを行うことができます。

HTML

<input id="myTextField" type="text" value="SomeValue" />​

JS

var myInput=document.getElementById('myTextField');
var myInput_value=myInput.value;
myInput.focus();
myInput.value=myInput_value;​

作業例。

于 2012-06-21T12:14:38.357 に答える
1

理想的な解決策は、入力の値を設定解除およびリセットすることではないと主張します。これにより、望ましくない副作用が生じる可能性があります。私の意見では、キャレットを移動する適切な方法は次のとおりです。

var input = document.getElementById('inputElement');
input.focus();
if(input.setSelectionRange) {
  input.setSelectionRange(input.value.length, input.value.length);
} else {
  var range = input.createTextRange();
  range.moveStart('character', input.value.length);
  range.moveEnd('character', input.value.length);
  range.select();
}
于 2012-06-21T12:19:11.897 に答える