IE8(とIEのみ)に問題があります。カーソルがそのフィールドの先頭に移動するテキストがある入力フィールドにフォーカスすると、問題が発生します。私は最後にカーソルを設定しようとしています。私の周りGoogleで検索し、次の解決策を見つけた:ここカーソルがテキストフィールドの先頭に移動する
function setSelectionRange(input, selectionStart, selectionEnd) {
input = document.getElementsByTagName("input")[0];
if (input.createTextRange) {
var range = input.createTextRange();
range.collapse(true);
range.moveEnd('character', selectionEnd);
range.moveStart('character', selectionStart);
range.select();
}
}
「入力」は、単にクラス(var inputElement = this.input;
)にある入力フィールドです。問題は、 "setSelectionRange"と "createTextRange"です。私は何か間違っているのですか? createTextRangeはTextAreaに対してのみ定義されていますか?
@Edit:うまくいけば、入力をdocument.getElementsByTagName( "input")[0]に変更した後、js入力とjquery入力のようなものを使用していたようです。私は "createTextRange"ブランチに行くことができますが、それでもカーソルの位置は変わりません。
@ Edit2:コードを少し変更しました。ドキュメントから入力を受け取り、ifブランチに入ります。しかし、その後のブラウザは私を示しています。この行で
var range = input.createTextRange();
EDIT3 @:ジェームスの質問に答えるために。私はクラスを持っており、そのクラスでは、すべてが入力を持つJSPに関連付けられています。
function onInputFocus() {
isFocused = true;
valueDivElement.hide();
labelElement.html(labelFocus);
if (currentData.selectedEntityCode) {
inputElement.val(currentData.selectedEntityCode);
inputElement.attr('title', currentData.selectedEntityCode);
} else {
}
var input = document.getElementsByTagName("input")[0];
input.value = input.value;
}
クラス全体が明らかにはるかに大きいと、これは私のコードが、私ではありません。このクラスでは、私はその後、私はこのような何かを持っているのjsp inputElement.focus(onInputFocus)
フォームの入力に関連付けられているフィールドのフォーカスハンドラを設定しますこれを推測するのは最後に実行されることです。
この関数は、要素に対しては正常に機能します。渡す要素がDOM入力要素であることは確かですか? –
はい、私はそれを再確認しました。問題は今 "var range = input.createTextRange();"です。なぜか分からない。そのブランチに入りますが、そのラインでは失敗し、残りは実行されません。 –
エラーが発生した場合、エラーメッセージは何ですか?そして、あなたはどこに焦点を当てていますか? –