Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Почему срабатывает после 2 клика?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Extazy
Отправлено: 27 Июня, 2015 - 00:41:46
Post Id


Посетитель


Покинул форум
Сообщений всего: 490
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Ув. гуру!
Прошу помогите найти ошибку - в яваскрипте я плох Растерялся

Значит выводится вот такая форма:
CODE (html):
скопировать код в буфер обмена
  1. <form action='/engine/ajax/my_votepost.php' method='POST' id='votepost' onsubmit='doVotePost(1,2,3); return false;'> ... </form>


Вот функция:
CODE (javascript):
скопировать код в буфер обмена
  1. function doVotePost (who,kogo,newsid) {
  2.   $('#votepost').submit(function(e){
  3.     e.preventDefault();
  4.     var m_method=$(this).attr('method');
  5.     var m_action=$(this).attr('action');
  6.     var m_data=$(this).serialize();
  7.     $.ajax({
  8.       type: m_method,
  9.       url: m_action,
  10.       data: m_data+"&who="+who+"&kogo="+kogo+"&newsid="+newsid,
  11.       success: function(result){
  12.           $('#votepost').html(result);
  13.       }
  14.     });
  15.   });
  16. };


В результате скрипт работает, возвращается нужный result, но это происходит только после 2-ого клика по кнопке SUBMIT. Почему? Растерялся

Если в яваскрипте удалить вот эту строку (оставить то, что внутри, но удалить конкретно вот это), то скрипт срабатывает после первого же клика, НО вместо возвращения result перекидывает на /engine/ajax/my_votepost.php и выводит результат там Растерялся
CODE (javascript):
скопировать код в буфер обмена
  1. $('#votepost').submit(function(e){ };



Что не так с $('#votepost').submit(function(e){ ?
(Добавление)
Проблема решена:

CODE (javascript):
скопировать код в буфер обмена
  1. $(document).on('submit', '#votepost', function (e) {
  2.   var form = $(this);
  3.  
  4.   e.preventDefault();
  5.   $.ajax({
  6.     type: this.method,
  7.     url: this.action,
  8.     data: form.serialize()
  9.   }).done(function (result) {
  10.     form.html(result);
  11.   });
  12. });
 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Июня, 2015 - 01:43:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Extazy пишет:
$(document).on('submit', '#votepost'
Перефразирую:

Эй, Демиурги!
А-нука метнулись!
Нашли мне в тот же миг все травинки во вселенной,
Которые ветер колышет на юго-восток,
С силою в 0.00040z эфирных тяготения в шестидесятиричном основании!
Extazy пишет:
e.preventDefault();

И остановите! Остановите ветер!
(Добавление)
Не, я всетаки расшифрую: надо не на документ вешать перехват всплытия, а куда-то по-локальнее, поближе к формам.
Надеюсь ты понял о чем я.
 
 Top
Extazy
Отправлено: 27 Июня, 2015 - 09:22:30
Post Id


Посетитель


Покинул форум
Сообщений всего: 490
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




DeepVarvar, читать Ваши метафоры одно удовольствие Ха-ха

Как правильно переписать, чтобы это не был поиск во всей вселенной? так?

CODE (javascript):
скопировать код в буфер обмена
  1. $(#votepost).on('submit', function (e) {
 
 Top
Viper
Отправлено: 27 Июня, 2015 - 12:05:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Extazy поближе, а не саму форму. http://api[dot]jquery[dot]com/on/


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Extazy
Отправлено: 27 Июня, 2015 - 12:17:53
Post Id


Посетитель


Покинул форум
Сообщений всего: 490
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Viper, а куда ещё ближе?
По вашей ссылке есть такой же пример с ссылкой только на форму:
CODE (javascript):
скопировать код в буфер обмена
  1. $( "form" ).on( "submit", function( event ) {
  2.   event.preventDefault();
  3. });
 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Июня, 2015 - 13:42:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Оберни формы в див, пусть он ловит события.
 
 Top
nerv
Отправлено: 29 Июня, 2015 - 22:32:18
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




DeepVarvar пишет:
а куда-то по-локальнее, поближе к формам

"девушка, какие формы" Улыбка


-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB