Я ищу способ установить выбор в текстовой области в Internet Explorer. В других браузерах это работает просто великолепно:
textarea.selectionStart = start;
textarea.selectionEnd = end;
В IE я предполагаю, что должен использовать createRange
и скорректируйте выбор так или иначе, но я не могу выяснить как.
Дополнительные бонусные очки для ссылки на необходимую документацию о createRange
и связанные методы, MSDN не выручает много.
Это работает для меня:
<textarea id="lol">
noasdfkvbsdobfbgvobosdobfbgoasopdobfgbooaodfgh
</textarea>
<script>
var range = document.getElementById('lol').createTextRange();
range.collapse(true);
range.moveStart('character', 5);
range.moveEnd('character', 10);
range.select();
</script>
Полезные ссылки:
moveStart() на MSDN: http://msdn.microsoft.com/en-us/library/ms536623%28VS.85%29.aspx
moveEnd() at MSDN: http://msdn.microsoft.com/en-us/library/ms536620%28VS.85%29.aspx
Попробуйте с
function select(e, start, end){
e.focus();
if(e.setSelectionRange)
e.setSelectionRange(start, end);
else if(e.createTextRange) {
e = e.createTextRange();
e.collapse(true);
e.moveEnd('character', end);
e.moveStart('character', start);
e.select();
}
}
select(document.getElementById('textarea_id'), 5, 10);
Остерегайтесь разделителей строк, методы move* воспринимают их как один символ, но на самом деле их два - \r\n