[Ответить в тред] Ответить в тред

16/08/16 - Запущен Двач Трекер
01/08/16 - Вернули возможность создавать юзердоски
09/07/16 - Новое API для капчи - внимание разработчикам приложений


Новые доски: /obr/ - Offline Battle Rap • /hv/ - Халява в интернете • /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 35 | 1 | 5
Назад Вниз Каталог Обновить

Аноним 18/09/16 Вск 11:37:27  136402217  
14741878477800.jpg (34Кб, 580x360)
14741878477811.jpg (30Кб, 685x95)
Есть div с атрибутом contenteditable="true" и id="message"
Другими словами это блок содержимое которого можно редактировать из окна браузера. Служит, как альтернатива input type="text"

Необходимо создать кнопки бб-кодов для вводимого в этот див текста. Создаем например такую кнопку

<input type="submit" onclick="bbcode('b'); return false" value="b">

теперь Функцию JS
пикрелейт 2 ибо какое-то там слово из спамлиста

Таким образом выделяя часть текста в диве и нажимая на кнопку передается 'b' в функцию bbcode, внутри которой создается новые html объект - <b></b>, в нутрь него вставляется выделенная часть текста. Хорошо, но нужно не так.

Необходимо, чтобы я передавал открывающийся и закрывающийся тег, вот так: onclick="bbcode('<b>','</b>'), а внутри функции bbcode выделенный текст оборачивался этими тегами. Как такое сделать?
Аноним 18/09/16 Вск 11:45:03  136402576
бамп
Аноним 18/09/16 Вск 11:54:50  136402982
бамп
Аноним 18/09/16 Вск 11:59:38  136403186
бамп
Аноним 18/09/16 Вск 12:01:31  136403284
Сделай где-нибудь невидимый элемент и хуярь ему innerHTML, а потом бери ноду, клонируй и аппенди.
Аноним 18/09/16 Вск 12:06:59  136403562
>>136403284
не могу, не шарю
Аноним 18/09/16 Вск 12:07:44  136403601
Тогда никак.
Аноним 18/09/16 Вск 12:08:23  136403644
тогда бамп
Аноним 18/09/16 Вск 12:12:24  136403884
бамп
Аноним 18/09/16 Вск 12:12:32  136403894
Тебе не нужно ничего оборачивать, за тебя все уже сделали.
https://developer.mozilla.org/ru/docs/Web/API/Document/execCommand
Аноним 18/09/16 Вск 12:14:34  136404017
>>136403894
нужно
Аноним 18/09/16 Вск 12:19:42  136404296
бамп
Аноним 18/09/16 Вск 12:20:13  136404334
>>136404017
Блять, execCommand('bold', ...) тебе те самые <b></b> и вставит. И обработает за тебя наличие/отсутствие выделения, и всю хуйню. А вот если тебе НЕ нужно таким способом, тебе придется отключить встроенные хоткеи, которыми эта execCommand уже вызывается по дефолту для элементов с contentEditable, а это гораздо сложенее.
Аноним 18/09/16 Вск 12:21:39  136404423
>>136404334
А что сложного? Переопределил execCommand и норм.
Аноним 18/09/16 Вск 12:22:44  136404482
>>136404423
Вперед. Переопредели и нажми Ctrl+B в хроме.
Аноним 18/09/16 Вск 12:26:15  136404682
>>136404334
если мне нужно обернуть в теги с атрибутами и свойствами, как с этим справится execCommand? Например <p class="pidoras">
Аноним 18/09/16 Вск 12:29:08  136404837
>>136402217 (OP)
Ебать ты изобретатель велосипедов.
Аноним 18/09/16 Вск 12:31:52  136404987
бамп
Аноним 18/09/16 Вск 12:36:43  136405252
Ну создоешь кароч такой createElement('div'), делаеш ему innerHTML = то, что передано в bbcode ('<b class="pidoras"></b>', например), доставаешь из него tagName - 'b' и attributes - {class: "pidoras"}, а дальше, как в оппосте плюс newNode.setAttribute. А все почему? Потому что ты хочешь странного. Не страдай хуйней, передавай атрибуты вторым параметром bbcode().
Аноним 18/09/16 Вск 12:41:34  136405537
>>136405252
Проблема не в этом. Проблема кода в ОП посте в том, что я не могу выделить например жирным и курсивом
Аноним 18/09/16 Вск 12:48:35  136405959
бамп
Аноним 18/09/16 Вск 12:53:13  136406261
бамп
Аноним 18/09/16 Вск 13:01:26  136406792
бамп
Аноним 18/09/16 Вск 13:03:25  136406921
>>136402217 (OP)
jquery не вариант юзать?
Аноним 18/09/16 Вск 13:04:08  136406961
>>136402217 (OP)
Наркоман ебучий.

>Есть div с атрибутом contenteditable="true" и id="message"

Нахуя, когда есть textarea.

>Необходимо создать кнопки бб-кодов

Нахуя, когда есть готовые и настраиваемые.
Аноним 18/09/16 Вск 13:09:08  136407270
бамп
Аноним 18/09/16 Вск 13:09:23  136407286
>>136405537
>Проблема кода в ОП посте в том, что я не могу выделить например жирным и курсивом

А почему это написано только в 20-м посте? Оп хуй, который не умеет ставить задачи.
Аноним 18/09/16 Вск 13:15:53  136407739
>>136407286
Потомучто эту проблему и проблему с передачей тега с атрибутом должна решить идея о реализации которой я вопросил в ОП посте
Аноним 18/09/16 Вск 13:19:55  136407994
>>136407739
Ты хоть бы потестировал свое говно. Вторая строчка перестает работать потому что parentElement становится не div, а b.
/thread
Аноним 18/09/16 Вск 13:24:30  136408267
>>136407994
Ебать и впрямь! А как решить сею задачу сохранив проверку: if (window.getSelection().focusNode.parentElement === document.getElementById('message'))
Аноним 18/09/16 Вск 13:30:29  136408616
>>136408267
Никак
Аноним 18/09/16 Вск 13:30:59  136408650
>>136408616
динамщик хуев(
Аноним 18/09/16 Вск 13:32:00  136408712
>>136408650
Пиши нормально без говнокода
Аноним 18/09/16 Вск 13:36:36  136408984
>>136408712
лан, а как черз createElement создать элемент с атрибутом?
Аноним 18/09/16 Вск 13:39:54  136409177
>>136408984
element.setAttribute
Аноним 18/09/16 Вск 13:42:26  136409332
>>136409177
дай бог тебе здоровьечка
И еще, вот проверка та:
window.getSelection().focusNode.parentElement === document.getElementById('message')

Можно же проверить ели фокус на элементе например <b> верно? Как?

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 35 | 1 | 5
Назад Вверх Каталог Обновить

Топ тредов
Избранное