Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Текст редактируемого дива (https://javascript.ru/forum/dom-window/18685-tekst-redaktiruemogo-diva.html)

leoHex 11.07.2011 16:13

Текст редактируемого дива
 
Доброго времени суток ув. форумчане!
Ситуация: у меня на странице редактируемый див (поле ввода для поиска), в зависимости от последнего введённого слова, в поле ниже появляются варианты поиска, при выборе одного из этих вариантов последнее слово (простой текст) меняется на ссылку... т.е. вид становится примерно такой:
1. (до)
<div ...>бла бла бла Поиск</div>

2. (после)
<div ...>бла бла бла<a href="./poisk.htm">Поиск</a></div>


и проблема в том что когда я продолжаю вводить текст в это поле он вводится не в div, уже в ссылку, что неправильно...

как указать положение курсора в этом диве, чтоб оно было за пределами ссылки? или может есть другие идеии.

p.s. получалось выйти за пределы ссылки с помощью какого нибудь символа типа тильды или кавычки (менее заметного) после самой ссылки
заранее спасибо!

da_ff 12.07.2011 10:51

Это код из какого-то моего проекта, который ставит курсор в конец введенного текста.
wnd - contentWindow редактируемого узла.
if (wnd.document.body.createTextRange) {
  var range = wnd.document.body.createTextRange(), textnode = wnd.document.createElement('span');

  textnode.appendChild(wnd.document.createTextNode(' '));
  var lastelement = ASC.TMTalk.dom.lastElementChild(wnd.document.body);
  (lastelement ? lastelement : wnd.document.body).appendChild(textnode);
  range.moveToElementText(textnode);
  range.select();

  range.pasteHTML('');
  range.collapse(true);
} else if (wnd.document.createRange) {
  var range = wnd.document.createRange(), textnode = wnd.document.createElement('span');

  textnode.appendChild(wnd.document.createTextNode(' '));
  wnd.document.body.insertBefore(textnode, ASC.TMTalk.dom.lastElementChild(wnd.document.body));
  range.selectNode(textnode);
  wnd.getSelection().addRange(range);
  wnd.getSelection().collapseToStart();
  wnd.document.body.removeChild(textnode);
}

leoHex 13.07.2011 21:48

спасибо разобрался, правда, не как посоветовали.
достаточно было добавить нечно такое:
ob.innerHTML+='\xA0';


p.s. тот код для дива не идёт он только инпут=( ну всё равно спасибо

da_ff 14.07.2011 10:38

leoHex,
он как раз для дива с contenteditable.

leoHex 19.07.2011 22:42

кажется понял как он работает=) спасибо!


Часовой пояс GMT +3, время: 08:49.