• Страница 1 из 1
  • 1
Модератор форума: JonMagon  
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » JavaScript » Ошибка работы яваскрипта
Ошибка работы яваскрипта
Prosvetekvator
Сообщений: 54
Репутация: 0

Сообщение # 1 | 23:56:18
Доброй ночи! Проблема заключается в том, что установленный мной скрипт добавления постов на форум без перезагрузки страницы, не добавляет пост после первого нажатия на кнопку отправить. Сообщение добавляется на форум успешно, только после второй попытки его добавления. Проверял его работу на двух форумах и в обоих случаях одна и та же проблема!


Вот скрипт, подскажите пожалуйста, на вас последняя надежда
Код
<?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)

Drinko
Сообщений: 909
Репутация: 773

Сообщение # 2 | 00:40:19
Prosvetekvator, скрипт расчитан на стандартную форму добавления постов, а у вас включен визуальный редактор.

Prosvetekvator
Сообщений: 54
Репутация: 0

Сообщение # 3 | 05:32:15
Drinko, а как его тогда переделать под визуальный редактор? И почему сообщения отправляются со 2 раза?
Drinko
Сообщений: 909
Репутация: 773

Сообщение # 4 | 11:22:32
Prosvetekvator, визуальный редактор работает через iframe, т.д. происходит примерно следующее:

1. Вы набираете сообщение.
2. При нажатии на кнопку "Отправить" скрипт синхронизирует формы iframe и текущей textarea.
3. Данные передаются на сервер.

Ваш же скрипт перехватывает сабмит формы отправки ДО синхронизации, т.д. получаем картину:

1. Вы набираете сообщение.
2. При нажатии на кнопку "Отправить" ваш скрипт перехватывает управление и пытается отправить пустую форму.
3. Скрипт визуального редактора синхронизирует формы iframe и текущей textarea.
3. Данные НЕ передаются на сервер, т.к. эту функцию перехватил на этапе 2 ваш скрипт.

Ну и далее:

4. Вы повторно жмете "Отправить" ваш скрипт перехватывает управление и отправляет данные на сервер, т.к. на третьем этапе (см. выше) формы синхронизировались и текущий textarea уже не пустой.
5. PROFIT!

Т.д. скрипт необходимо переделывать, чтобы он перехватывал управление сабмитом уже после синхронизации форм, + еще проверку на тип текущей формы - обычная\визуальный редактор.

Prosvetekvator
Сообщений: 54
Репутация: 0

Сообщение # 5 | 14:39:37
Блин все планы рухнули( спасибо за ответ! Может кто подскажет как это исправить? Этот скрипт мне очень нужен, составляю скрипт ленты совытий на сайте, а при добавлении поста, страница обновляется и событие не добавляется в ленту.
player()
Сообщений: 32
Репутация: 0

Сообщение # 6 | 11:16:19
Господа, есть ли какое решение данной проблемы?
Goodmind
Сообщений: 80
Репутация: 18

Сообщение # 7 | 19:01:53
Можно сделать принудительную синхронизацию
Ferro7
Сообщений: 285
Репутация: 230

Сообщение # 8 | 20:43:40

Вы полюбили меня. Здесь я. (с)
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » JavaScript » Ошибка работы яваскрипта
  • Страница 1 из 1
  • 1
Поиск: