Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.10.2014, 22:05
Интересующийся
Отправить личное сообщение для Franz Посмотреть профиль Найти все сообщения от Franz
 
Регистрация: 30.10.2014
Сообщений: 17

Скрыть 2 div'a после клика вне первого.
Собственно, сабж.

Текущий код умеет:
При нажатии на кнопку ОК (#mc-embedded-subscribe) вылезает попап с одним из двух div'ов (#mce-error-response или #mce-success-response) (эта часть кода храниться на сервере, предоставляющем API).

Вместе с этими дивами вылезает блок, который затемняет весь background (#modal-bg).

При клике вне попапа он закрывается. Как сделать, чтобы вместе с ним закрывался и затемняющий background блок? И как можно красиво переписать существующий JS код?

Большое спасибо.

<div id="mce-responses">
              <div id="mce-error-response" style="display:none" ></div>
              <div id="mce-success-response" style="display:none"></div>
            </div> 
            <div id="modal-bg" style="display:none">
            <input type="submit" value="ОК" id="mc-embedded-subscribe" onClick="show();">



<script>
        function show(){
	document.getElementById('modal-bg').style.display = 'block';        
    }
        window.onload = function () {
        document.onclick = function (e) {
             e = e || window.event;
             if((e.target || e.srcElement).id != 'mce-success-response') {
                 document.getElementById('mce-success-response').style.display = 'none';
                 
             }
             if((e.target || e.srcElement).id != 'mce-error-response') {
                 document.getElementById('mce-error-response').style.display = 'none';
                 
             }
        }
    }

Последний раз редактировалось Franz, 30.10.2014 в 22:36. Причина: Убрал лишний закрывающий div.
Ответить с цитированием
  #2 (permalink)  
Старый 30.10.2014, 22:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Franz,
как можно нажать на ок если кнопка в невидимом блоке
Ответить с цитированием
  #3 (permalink)  
Старый 30.10.2014, 22:37
Интересующийся
Отправить личное сообщение для Franz Посмотреть профиль Найти все сообщения от Franz
 
Регистрация: 30.10.2014
Сообщений: 17

Не понял.
Input, который является кнопкой, активен. Никаких скрывающих свойств не указано.
Ответить с цитированием
  #4 (permalink)  
Старый 30.10.2014, 22:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Franz, классика делегирования
function show() {
  	  document.getElementById('modal-bg').style.display = 'block';
  	}
  	window.onload = function () {
  	  document.onclick = function (e) {
  	    e = e || window.event;
  	    var target = event.target || event.srcElement;
  	    while(target != this) {
  	      if (target.id == 'mce-responses') {
  	        return
  	      }
  	      target = target.parentNode;
  	    }
  	    document.getElementById('mce-success-response').style.display = 'none';
  	    document.getElementById('mce-error-response').style.display = 'none';
  	    document.getElementById('modal-bg').style.display = 'none';
  	  }
  	}
Ответить с цитированием
  #5 (permalink)  
Старый 30.10.2014, 22:59
Интересующийся
Отправить личное сообщение для Franz Посмотреть профиль Найти все сообщения от Franz
 
Регистрация: 30.10.2014
Сообщений: 17

Спасибо за ответ.

Простите, моё изучение JS началось час назад и поэтому вопрос:
это дополняющий код или заменяющий?

Если заменяющий, то после его вставки #modal-bg перестал появляться.
Ответить с цитированием
  #6 (permalink)  
Старый 30.10.2014, 23:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Franz,
строка 9 добавьте вашу кнопку в число запретных
if (target.id == 'mce-responses' || target.id == 'mc-embedded-subscribe') {
Ответить с цитированием
  #7 (permalink)  
Старый 30.10.2014, 23:23
Интересующийся
Отправить личное сообщение для Franz Посмотреть профиль Найти все сообщения от Franz
 
Регистрация: 30.10.2014
Сообщений: 17

Всё работает, супер. Спасибо.

Теперь буду думать как всё это оптимизировать.
Ответить с цитированием
  #8 (permalink)  
Старый 05.11.2014, 19:53
Интересующийся
Отправить личное сообщение для Franz Посмотреть профиль Найти все сообщения от Franz
 
Регистрация: 30.10.2014
Сообщений: 17

Снова здравствуйте.
Выяснилось, что не такая реализация не работает под android. Окно открывается, но закрыть его уже не выходит. Какие могут быть причины?

UPD: Как можно поменять скрипт так, чтобы modal-bg открывался только в случае открытия mce-success-response\error?
Потому что сейчас может случиться так: пользователь промахнулся\случайно нажал на кнопку ОК - попап не вылез, а затенение появилось.

Последний раз редактировалось Franz, 05.11.2014 в 20:38.
Ответить с цитированием
  #9 (permalink)  
Старый 05.11.2014, 20:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Franz,
может там
target = event.targetTouches[0]
a "click"="touchstart"

Последний раз редактировалось рони, 05.11.2014 в 20:44.
Ответить с цитированием
  #10 (permalink)  
Старый 05.11.2014, 20:48
Интересующийся
Отправить личное сообщение для Franz Посмотреть профиль Найти все сообщения от Franz
 
Регистрация: 30.10.2014
Сообщений: 17

Пардон, но "там" это где?
А настройках браузера? Или где-то в скрипте?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменение правила display после первого посещения onuvidelsolnce Элементы интерфейса 8 08.01.2014 17:34
Действие после клика мыши 1n3gan jQuery 2 06.11.2013 15:11
функция внутри Live() срабатывает после второго клика Ad1r jQuery 7 09.08.2011 14:11
После первого действия скрипт перестает работать cyberx jQuery 6 12.06.2010 22:04
Не убирать кнопку после клика по ней. CompModdd jQuery 2 12.05.2009 02:13