[Javascript] работа с выделенным участком текста

uncle17

как организуется?
Для примера - есть, допустим, <textarea name=sometext>Текст___ выделенный текст</textarea>
как сделать из "выделенный текст"... к примеру, "<b>выделенный текст </b>"?

maggi14

var s = document.GetItemsByName('sometext').innerHTML;
Со строкой s можно работать стандартными строковыми и регексп-функциями (напр., string.replace)
А затем, когда s поменял, как надо, пишешь снова:
document.GetItemsByName('sometext').innerHTML = s;

Maurog

может, понятие "выделенный текст" тебе разжевать ? :-)

maggi14

задавай более конкретные вопросы, если хочешь услышать ответ.

uncle17

+1
Егор, не совсем то...
Этот "выделенный текст" я мышкой выделяю, а то, что выделилось, потом хочу обрамлять тегами

maggi14

а, блин, понял.

uncle17

var range = document.all.sometext.createTextRange;
range.text="<b>"+range.text+"</b>";
оно?

Maurog

оно

uncle17

а не пашет...

Maurog

оно=в нужную сторону копаешь то бишь textrange нужен)
ну и работает это чудо только в правильных браузерах типа ие)

maggi14

патамушта не так. Смотри по ссылке. Правда, в Опере и это не пашет.

uncle17

ап... всё что-то не то... конкретно для этого примера как сделать?

artimon

<html>
<body>
<form>
<textarea id="s" style="width: 100%; height: 200px">zdjfhglsd fglkzd flgzdj f</textarea>
<input type="button" value="test" onclick="a">
</form>
<script type="text/javascript">
function a {
s = document.getElementById('s');
s.value = s.value.substring(0,s.selectionStart) +
'<b>' + s.value.substring(s.selectionStart,s.selectionEnd) +
'</b>' + s.value.substring(s.selectionEnd);
}
</script>
</body>
</html>

Пашет в Firefox'е.

uncle17

в ИЕ не пашет... точнее, не так, как надо... бум додумывать

artimon

Зато то, что было по ссылке выше, пашет в IE.
Компилируй решения
В ie нет selectionStart и selectionEnd

uncle17

вот именно в З.Ы. и проблема:)

uncle17


<html>
<body>
<form>
<textarea id="s" style="width: 100%; height: 200px">zdjfhglsd fglkzd flgzdj f</textarea>
<input type="button" value="test" onclick="a">
</form>
<script type="text/javascript">
function a {
var range = document.selection.createRange;
range.text="<b>"+range.text+"</b>";
}
</script>
</body>
</html>

работает в ИЕ...

artimon

Первое, что пришло в голову:
function a {
var s = document.getElementById('s');
if (s.selectionEnd) {
s.value = s.value.substring(0,s.selectionStart) + '<b>' +
s.value.substring(s.selectionStart,s.selectionEnd) +
'</b>' + s.value.substring(s.selectionEnd);
} else {
var range = document.selection.createRange;
range.text="<b>"+range.text+"</b>";
}
}

uncle17

спсб:)
Оставить комментарий
Имя или ник:
Комментарий: