|
|
Модератор форума: JonMagon |
Сообщество uCoz Вебмастеру JavaScript, Flash и прочие технологии JavaScript Ошибка работы яваскрипта |
Ошибка работы яваскрипта |
Доброй ночи! Проблема заключается в том, что установленный мной скрипт добавления постов на форум без перезагрузки страницы, не добавляет пост после первого нажатия на кнопку отправить. Сообщение добавляется на форум успешно, только после второй попытки его добавления. Проверял его работу на двух форумах и в обоих случаях одна и та же проблема!
Вот скрипт, подскажите пожалуйста, на вас последняя надежда Код <?if($PAGE_ID$='threadpage')?><script type="text/javascript">function haveFiles(){var f = false;$("input.uplFileFl").each(function(){if ($(this).val()) f=true;});return f}document.addform.onsubmit = function(){var namewnd = "w" + Math.floor(Math.random()*999); _uWnd.alert('<img src="/.s/img/wd/3/ajax.gif" border="0" alt="Загрузка">','Загрузка',{name: namewnd, w: 250, h: 80, tm: 0}); $("#frF16").attr("disabled", true); if (haveFiles()) {_uPostForm($("form[name='addform']"), {success: function(dt){ parseResult(dt, namewnd);}})} else {$.post("/forum", $("form[name='addform']").serialize(), function(dt) {parseResult(dt, namewnd)})};return false;};function parseResult(dt, namewnd){var err = $("#frM2", dt).text(), thmurl = $("a:first", dt).attr("href"); if (err) {_uWnd.content(namewnd, '<center>'+err+'</center>'); _uWnd.setTitle(namewnd, 'Ошибка'); $("#frF16").attr("disabled", false); setTimeout(function(){ _uWnd.close(namewnd) },2000);} else if ($(dt).text().indexOf("Ответ добавлен") > -1) { $("textarea#message").val(""); $("form[name='addform'] input:file").val(""); _uWnd.content(namewnd, '<center>Добавлено</center>'); _uWnd.setTitle(namewnd, 'Успех'); $("#frF16").attr("disabled", false); setTimeout(function(){ _uWnd.close(namewnd) },2000); setTimeout(function(){ <?if $PAGE_ID$='threadpage'?>$(".gDivRight:first").load(thmurl + "?" + Math.floor(Math.random()*9999) + " .gDivRight:first"); setPnt(thmurl);<?endif?><?if $PAGE_ID$='addthread' or $PAGE_ID$='addpoll'?>setPnt($("td.forumNamesBar:first a.forumBarA:last", dt).attr("href"), true);<?endif?>}, 50);} else { _uWnd.content(namewnd, 'Во время отправки произошла обишка'); _uWnd.setTitle(namewnd, 'Не удалось'); $("#frF16").attr("disabled", false); setTimeout(function(){ _uWnd.close(namewnd) },2000); }};</script><?endif?> Прикрепления:
4564428.jpg
(36.5 Kb)
|
Prosvetekvator, скрипт расчитан на стандартную форму добавления постов, а у вас включен визуальный редактор.
|
Drinko, а как его тогда переделать под визуальный редактор? И почему сообщения отправляются со 2 раза?
|
Prosvetekvator, визуальный редактор работает через iframe, т.д. происходит примерно следующее:
1. Вы набираете сообщение. 2. При нажатии на кнопку "Отправить" скрипт синхронизирует формы iframe и текущей textarea. 3. Данные передаются на сервер. Ваш же скрипт перехватывает сабмит формы отправки ДО синхронизации, т.д. получаем картину: 1. Вы набираете сообщение. 2. При нажатии на кнопку "Отправить" ваш скрипт перехватывает управление и пытается отправить пустую форму. 3. Скрипт визуального редактора синхронизирует формы iframe и текущей textarea. 3. Данные НЕ передаются на сервер, т.к. эту функцию перехватил на этапе 2 ваш скрипт. Ну и далее: 4. Вы повторно жмете "Отправить" ваш скрипт перехватывает управление и отправляет данные на сервер, т.к. на третьем этапе (см. выше) формы синхронизировались и текущий textarea уже не пустой. 5. PROFIT! Т.д. скрипт необходимо переделывать, чтобы он перехватывал управление сабмитом уже после синхронизации форм, + еще проверку на тип текущей формы - обычная\визуальный редактор. |
Блин все планы рухнули( спасибо за ответ! Может кто подскажет как это исправить? Этот скрипт мне очень нужен, составляю скрипт ленты совытий на сайте, а при добавлении поста, страница обновляется и событие не добавляется в ленту.
|
|
| |||
| |||