私は別の質問でこれを見つけた:それは8番目の文字と12文字の間にテキスト領域からテキストを選択する必要がありsetSelectionRangeはブラウザ間で同じように動作しませんか?
setCaretToPos = function(input, selectionStart, selectionEnd){
if(input.setSelectionRange){
input.focus();
input.setSelectionRange(selectionStart, selectionEnd);
}else if(input.createTextRange){
var range = input.createTextRange();
range.collapse(true);
range.moveEnd('character', selectionEnd);
range.moveStart('character', selectionStart);
range.select();
}
};
setCaretToPos(8, 12);
。
FirefoxとChromeでは動作しますが、Operaでは誤った選択をします。オフセットが2文字遅れる
何が問題なのですか?
テキストに改行文字が含まれていない場合は、選択が正しいため、新しい行:
\n
と関係があるようです。
方法は、あなたがあなたの関数の入力パラメータが欠落していることです。これは引数リストにありますが、関数に渡すことはありません。これをチェックしてください:http://jsfiddle.net/7Tsx6/そしてdocument.getElementById部分を削除して、両方の場合を試してみてください。 –
いいえ、私の質問では間違いでしたが、入力引数を追加するのを忘れてしまいました。問題は、textareaに新しい行がある場合に表示されます。 – Alex
上記のコメントに基づいて、jQueryオブジェクトまたは実際の要素を渡していますか? – Seth