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 :: Скрытие div по нажатию на document

 PHP.SU

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


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

> Описание: Скрытие div по нажатию на document
s3ga
Отправлено: 14 Августа, 2014 - 08:23:44
Post Id


Частый гость


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


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




Здраствуйте, подскажите пожалуйста. На странице есть панелька - что то вроде обратной связи, по нажатию на которую я вывожу форму
CODE (javascript):
скопировать код в буфер обмена
  1.                 $(".panel_left").toggle("fast");
  2.                 $(this).toggleClass("active");

Потом необходимо было чтобы по нажатию на любое другое место в документе форма исчезала, написал
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).click(function(e){
  2.     if ($(e.target).parents().filter('.panel_left:visible').length != 1) {
  3.         $('.panel_left').hide("slow");
  4.     }
  5. });

Но теперь при нажатии в форме кнопки отправить, форма закрывается, как грамотно обойти ситуацию? наверное нужно добавить в исключение id кнопки?в js слабоват
Ах да вот сам html
CODE (html):
скопировать код в буфер обмена
  1.                 <div class="panel_left">
  2.                         <form id="form_question">
  3.         <input type="text" name ="qname" id ="qname" required/>
  4.          <input id ="qmail" type="email" name ="qmail" required/>
  5.         <textarea id ="qmessage" name="qmessage" rows="5" required></textarea>
  6.         <input type="submit" onclick="send_question();" id="btn_q" value="Отправить"/>
  7.                         </form>
  8.                 </div>

(Отредактировано автором: 14 Августа, 2014 - 08:25:31)

 
 Top
RickMan
Отправлено: 14 Августа, 2014 - 09:00:45
Post Id


Участник


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


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




Вот кучу решение этого вопроса. Зачем изобретать велосипед, когда он уже есть?
http://hashcode[dot]ru/questions/140[dot][dot][dot]е-вне-этого-дива
http://druweb[dot]ru/jquery-autohide[dot]html
http://web-benefit[dot]net/item/jque[dot][dot][dot]e_vne_etogo_diva
 
 Top
s3ga
Отправлено: 14 Августа, 2014 - 11:29:39
Post Id


Частый гость


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


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




У меня проблема в том что ссылка при нажатии на которую открывается скрытая панель, нах-ся в другом диве
взял вот этот код
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).mouseup(function (e) {
  2.     var container = $(".panel_left");
  3.     if (container.has(e.target).length === 0){
  4.         container.hide();
  5.     }
  6. });
Но тогда вкупе с моим
CODE (javascript):
скопировать код в буфер обмена
  1.         $(".trigger_left").click(function(){
  2.                 $(".panel_left").toggle("fast");
  3.                 $(this).toggleClass("active");
  4.                 return false;
  5.         });
Нажимая на триггер панель исчезает и появляется вновь
Вот пожалуйста http://jsfiddle[dot]net/sxemmvw2/

(Отредактировано автором: 14 Августа, 2014 - 11:34:31)

 
 Top
RickMan
Отправлено: 14 Августа, 2014 - 12:10:54
Post Id


Участник


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


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




Проблема ясна. Когда поле активно и ты нажимаешь на кнопку, то срабатывают оба действия (что логично). Следовательно он сначала обрабатывает второе действие и прячет окно и после этого србатывает действие нажатия на кнопку и он показывает окно по новой...
 
 Top
s3ga
Отправлено: 14 Августа, 2014 - 12:25:51
Post Id


Частый гость


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


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




Проблема то ясна, а как выйти из неё не ясна)
 
 Top
tato
Отправлено: 15 Августа, 2014 - 00:42:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


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




CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  // определяем над контейнером мы или нет
  3. var over = false;
  4. $('body').on('mouseover','.panel_left', function(){if(!over)over=true; });
  5. $('body').on('mouseout', '.panel_left', function(){if( over)over=false;});
  6.  // скрываем если нет
  7. $('body').click(function(){if(!over) $('.panel_left').hide();});
  8.  
  9. $(".trigger_left").click(function(){
  10.         $(".panel_left").toggle("fast");
  11.         $(this).toggleClass("active");
  12.         return false;
  13. });
  14.  


-----
просто ?: сложно
 
 Top
s3ga
Отправлено: 15 Августа, 2014 - 07:55:26
Post Id


Частый гость


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


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




спасибо
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB