Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   getSelection(), createRange() и перенос курсора в пустой тег (https://javascript.ru/forum/misc/50919-getselection-createrange-i-perenos-kursora-v-pustojj-teg.html)

Romja 16.10.2014 21:53

getSelection(), createRange() и перенос курсора в пустой тег
 
Доброго времени суток! Возникла проблема такого плана: при фокусе элемента <div> с атрибутом contenteditable="true", в этом div-е создается пустой параграф <p></p>, также, после создания параграфа, курсор ввода текста должен переместится в этот параграф и при вводе какого-либо текста, текст должен заносится не в <div> а в <p>. Вот как-то у меня совсем это не получается, приведенный ниже код работает только если в параграфе будет хоть немного текста.

<div id="editor" contenteditable="true"></div>


$('#editor').focus(function() {
        if($(this).html() == '') {
            $(this).html('<p></p>');

            var par = $(this).children('p').get(0);
            rng = document.createRange();
            rng.selectNode(par);
            sel = window.getSelection();
            sel.removeAllRanges();
            sel.addRange(rng);
        }
});

danik.js 16.10.2014 23:36

Цитата:

Сообщение от Romja
если в параграфе будет хоть немного текста

Ну так, потому то wysiwyg редакторы типа CKEditor/TinyMCE вставляют <br>
Вобще, не советую связываться с contenteditable самому. Лучше заюзать готовый вылизанный скрипт. Например тот же CKEditor - он умеет работать в режиме contenteditable.


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