Как вывести форму добавления комментария в AJAX-окне?
|
|
[1] vospa [02.11.2015, 15:23] |
Доброго времени суток! По целому ряду причин возникла необходимость вывода формы добавления комментария в AJAX-окне. Порылся по интернету, нашел кучу вариантов вывода в окошке добавления различных материалов, а вот с комментариями для юкоза не нашел ничего. Точнее, нашел единственную ссылку, но этот способ как-то странно работает. В панели управления, на странице формы добавления комментариев заключаю весь код в дивный блок и дописываю такой код:
Код <a href="javascript://" onclick="wind_add_com()">Добавить комментарий</a> <script> function wind_add_com(){ _uWnd.alert($("#com_add_form").html(),'Добавление комментария',{name:'add_com', align:'left', w:700, h:600}) }; </script> <div id="com_add_form" style="display:none;"> ВЕСЬ КОД UCOZ-а </div>
Как бы... выводит форму в окошке, но... там выводится форма в форме и ничего не работает... Если на код в css и html я уже не смотрю, как баран на новые ворота, то со скриптами беда. Что нужно переделать в коде, чтобы заработало? Или этот путь вообще тупиковый и все нужно делать иначе?
Сообщение отредактировал vospa - Понедельник, 02.11.2015, 15:24 |
|
[2] likbezz [02.11.2015, 18:48] |
то нужно переделать в коде, чтобы заработало? Или этот путь вообще тупиковый и все нужно делать иначе? Да нет, путь не тупиковый - есть варианты, и представленный код не самый худший) Чуть позже выложу работающий вариант.
Заменить
на
Код <a href="javascript://" onclick="new _uWnd('add_com','Добавить комментарий',700,255,{max:1,min:1,popup:0,autosize:0,resize:0,closeonesc:1,align:'left'},$('#com_add_form').html().replace('document.write',''));return false;">Добавить комментарий</a> <div id="com_add_form" style="display:none;">$COM_ADD_FORM$</div> И будет вот так: http://likbezz.ucoz.ru/news/2003-12-05-315
![](http://likbezz.ucoz.ru/_fr/19/s9644703.jpg) ---
ps Сайт likbezz.ucoz.ru архивный, последующая помощь оказывается тут: http://likbezz.ru/viewforum.php?f=56, аккаунты перенесены, то бишь - логин,пароль - ваши текущие здесь.
|
|
[3] vospa [02.11.2015, 19:24] |
Воу! Огромное человеческое спасибо! А то я уже пошел по запасным вариантам и стал делать чисто на css с выезжающим блоком. Но с AJAX-окошком, конечно же, намного лучше ![smile](http://s2.ucoz.net/sm/1/smile.gif)
Сообщение отредактировал vospa - Понедельник, 02.11.2015, 19:25 |
|
[4] likbezz [02.11.2015, 19:28] |
Но с AJAX-окошком, конечно же, намного лучше Аха, осталось только придумать, как закрывать окошко после добавления комментария..) |
|
[5] vospa [02.11.2015, 22:28] |
осталось только придумать, как закрывать окошко Очень надеюсь, что с этим справлюсь самостоятельно. Нечто похожее уже делал. Теперь буду пытаться сообразить почему все заработало ![biggrin](http://s2.ucoz.net/sm/1/biggrin.gif) Добавлено (02.11.2015, 22:28) --------------------------------------------- Мда... я идиот... Сначала не заработал и Ваш вариант. Все так же, форма в форме. Потом, наконец таки дошло, и отключил визуальный редактор комментариев, и... заработало Больше того, заработал даже исходный код, с которым я мучался ![biggrin](http://s2.ucoz.net/sm/1/biggrin.gif) |
|
[6] likbezz [03.11.2015, 08:00] |
Больше того, заработал даже исходный код, с которым я мучался У меня не работало, пока не убрал document.write .. ни ваш ни мой вариант..)
Потом, наконец таки дошло, и отключил визуальный редактор комментариев, и... заработало
Код <a href="javascript://" onclick="new _uWnd('add_com','Добавить комментарий',700,255,{max:1,min:1,popup:0,autosize:0,resize:0,closeonesc:1,align:'left',oncontent:function(){$('#ajax_add_form').html($('#com_add_form').html().replace('document.write',''));$('#ajax_add_form').find('.wysibb-toolbar:first').remove()}},'<div id=\'ajax_add_form\'></div>');return false;">Добавить комментарий</a>
![](http://likbezz.ucoz.ru/_fr/19/s3575156.jpg)
или вот так:
Код <a href="javascript://" onclick="new _uWnd('add_com','Добавить комментарий',700,255,{max:1,min:1,popup:0,autosize:0,resize:0,closeonesc:1,align:'left'},$('#com_add_form').find('.wysibb-toolbar:first').remove().end().html().replace('document.write',''));return false;">Добавить комментарий</a> ---
|
|
[7] vospa [07.11.2015, 11:38] |
Сорри, что не ответил сразу, отвлекся на пару дней. Хмм... последние варианты подразумевают, что и визуальный редактор будет правильно отображаться? Попробовал, но... все равно получается окно в окне. Единственно, теперь стала отображаться только одна панель инструментов, а вот текстовых полей все равно два... Впрочем, не принципиально, без визуального же работает. Правда, все равно не все. В частности, не работают юкозовские кнопки подписки и анонимности. Я ведь связался с выносом формы в окно только потому, что с ней у меня совершенно не дружит установленный у меня скролл бар. Да и вообще, еле удалось помирить версию jquery c еще двумя плагинами, скролл баром и флип галереей. Наверное, заставить их дружить друг с другом можно, включая и форму добавления комментариев, но это уже значительно превосходит мои текущие познания. А просить разбираться постороннего человека в моем нагромождении кода (уж как смог ), мягко говоря, неприлично. В конечном итоге, отказался я от аякс окна и сделал все на html и css. Но в любом случае, большое спасибо. Я уже знаю, где Вашим кодом воспользуюсь А с текущей задачей я пока справился таким вот образом: My WebPage
Сообщение отредактировал vospa - Суббота, 07.11.2015, 11:39 |
|
[8] likbezz [07.11.2015, 12:25] |
vospa, Хмм... последние варианты подразумевают, что и визуальный редактор будет правильно отображаться? Теоретически..
Попробовал, но... все равно получается окно в окне. Единственно, теперь стала отображаться только одна панель инструментов, а вот текстовых полей все равно два... Значит нужно удалить еще и лишнее поле..
Такое получается из-за повторной инициализации скрипта редактора и он дублирует элементы. Скрипт редактора не ковырял, ибо не пользуюсь, так что вариантом стал способ обычного удаления дублирующихся элементов. Правильнее, конечно, было бы скорректировать сам скрипт, но.. вот так.
Я ведь связался с выносом формы в окно только потому, что с ней у меня совершенно не дружит установленный у меня скролл бар. - Это тот, что прокручивает картинки на заднем плане?
Да и вообще, еле удалось помирить версию jquery c еще двумя плагинами, скролл баром и флип галереей. Ваш текущий вариант - с позиционированием формы - хорошая альтернатива аякс окошку.
ps Замечен небольшой косяк (мозилла 42) - при открытии формы нельзя выделить ничего из самой новости, ибо форма выше по индексу и перекрывает новость. Не оч. удобно, если хочешь процитировать что-то.
|
|
[9] vospa [07.11.2015, 14:30] |
Цитата - Это тот, что прокручивает картинки на заднем плане? Нет, это просто нештатный скролл бар. В приведенной ссылке просто новость короткая и его не видно. Так вот, если форма оказывается внутри блока со скроллом, то страница не отображается вообще. Мелькнет на секунду при обновлениии, и все, дальше белый экран. Вот из-за этого я и решил вынести форму в отдельное окно. А вообще, у меня были конфликты с выбранной версией библиотеки jquery, вот этим самым скролл баром и плагином прокручивания картинок на заднем плане. До смешного доходило. На версиях jquery до 1.5.2 работает ПОЧТИ все, но все равно приходится изворачиваться с мелкими косяками. До версии 1.9 не работает скролл бар на некоторых страницах. А начиная с 1.9.1 скролл бар работает как часы, зато не работает другой плагин Вот и пришлось изворачиваться, сообразно своим силам.
Цитата Замечен небольшой косяк Ага. Там еще есть мелкие недоработки, так что я пока в процессе ![smile](http://s2.ucoz.net/sm/1/smile.gif)
Сообщение отредактировал vospa - Суббота, 07.11.2015, 14:37 |
|
[10] likbezz [08.11.2015, 10:43] |
vospa, Нет, это просто нештатный скролл бар. В приведенной ссылке просто новость короткая и его не видно. Так вот, если форма оказывается внутри блока со скроллом, то страница не отображается вообще. Мелькнет на секунду при обновлениии, и все, дальше белый экран. Это потому что в форме есть document.write, а скроллбар формируется перемещением контента в болоки со скроллом .. ну и, соответственно, при перемещении выполняется document.write, и наблюдается белый экран. Для решения проблемы нужно, либо исключить перемещение, то бишь пормировать блоки руками в шаблоне, либо удалить из перемещаемого кода такие вещи, как document.write, типа как сделано в, предоставленных выше, фрагментах.
На версиях jquery до 1.5.2 работает ПОЧТИ все, но все равно приходится изворачиваться с мелкими косяками. До версии 1.9 не работает скролл бар на некоторых страницах. А начиная с 1.9.1 скролл бар работает как часы, зато не работает другой плагин Ну, данный вопрос навскидку не решишь - нужно смотреть дебаг - какие конкретно ошибки возникают и корректировать скрипты, в зависимости от ситуации. Я не встречался с ситуациями, которые нельзя, так или иначе, разрешить.
Там еще есть мелкие недоработки, так что я пока в процессе Ну .. “процесс” - это вечное )) |
|