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 :: Checkbox'ы и отправка формы (пустой ответ)

 PHP.SU

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


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

> Без описания
madlabel
Отправлено: 08 Сентября, 2015 - 22:38:06
Post Id


Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Июль 2015  


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




Проблему с флажками решил.
Другая беда.

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $("a.enable").click(function() {
  3.                 var icon        = $(this);
  4.                 var line        = icon.closest(".a");
  5.                 var id          = line.find('input[type="checkbox"][name*="check"]').val();
  6.                 var state       = line.hasClass('enable')?0:1;
  7.                 icon.addClass('loading');
  8.                 $.ajax({
  9.                         type: 'POST',
  10.                         url: '/engine/modules/admin/ajax/update.php',
  11.                         data: {'object': 'menu'},
  12.                         success: function(data){
  13.                                 icon.removeClass('loading');
  14.                                 icon.removeClass('enable');
  15.                                 icon.addClass('disable');                              
  16.                         }
  17.                 });    
  18.                 return false;
  19. });
  20.  
  21. $("a.disable").click(function() {
  22. alert(2);
  23. });
  24.  


Суть в том, есть иконка при нажатии на которую отправляются данные скрипту и меняется класс иконки на disable если пришел положительный от скрипта ответ.
Первую задачу скрипт делает - отправляет данные + меняет класс на disable. Но, при повторном клике на иконку ничего не происходит ( alert(2); ) не вылазит.
В чём подвох?

(Отредактировано автором: 08 Сентября, 2015 - 23:13:11)

 
 Top
lastdays
Отправлено: 08 Сентября, 2015 - 23:57:39
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


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




Посмотри через инструмент разработчика, добавился ли класс, скорее всего надо сначала его добавить, а потом удалить текущие.

(Отредактировано автором: 08 Сентября, 2015 - 23:59:07)

 
 Top
madlabel
Отправлено: 09 Сентября, 2015 - 00:17:40
Post Id


Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Июль 2015  


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




lastdays пишет:
Посмотри через инструмент разработчика, добавился ли класс, скорее всего надо сначала его добавить, а потом удалить текущие.


Попробовал как сказали, эффекта нуль. Класс добавился (enable & loading убрались), при повторном клике ничего не происходит.
 
 Top
DelphinPRO
Отправлено: 09 Сентября, 2015 - 00:52:39
Post Id



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


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


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




Вариант один

добавить к ссылке еще один класс, за который можно будет уцепиться из скрипта
и исправить обработчики
CODE (javascript):
скопировать код в буфер обмена
  1. $("a.someclass").click(function() {
  2.   if ($(this).hasClass('disable')) {
  3.     alert(2);
  4.   }
  5. });



Вариант два

Вешать обработчик на родителя
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).on("click", "a.disable", function() {
  2.     alert(2);
  3. });



Причина вашего неработающего кода:
Когда вы навешиваете обработчик на a.disable, его еще не существует, и событие не навешивается.

(Отредактировано автором: 09 Сентября, 2015 - 00:53:25)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
andrewkard
Отправлено: 09 Сентября, 2015 - 10:49:09
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


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




Вариант 3.
Переместить навешивание обработчика в функцию
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. success: function(data){
  3.    icon.removeClass('loading');
  4.    icon.removeClass('enable');
  5.    icon.addClass('disable');
  6.  
  7.     $("a.disable").click(function() {
  8.               alert(2);
  9.      });
  10.                              
  11. }
  12.  
 
 Top
DelphinPRO
Отправлено: 09 Сентября, 2015 - 13:08:13
Post Id



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


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


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




andrewkard пишет:
Переместить навешивание обработчика в функцию

и получить нечитаемый код Улыбка

Правильный ответ - вариант номер два.


-----
Чем больше узнаю, тем больше я не знаю.
 
 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