Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.04.2015, 01:14
Интересующийся
Отправить личное сообщение для bubanay Посмотреть профиль Найти все сообщения от bubanay
 
Регистрация: 20.12.2013
Сообщений: 10

изменение display блока по клику
На ссылке висит функция.
<a href="javascript:attribute()">Звонок</a>
По клику на нее появляется и исчезает блок div#cl с формой. Как мне добавить в эту функцию событие, что бы при нажатии мимо ссылки и блока div c формой, div исчезал бы.

И можно ли как-то убрать функцию из ссылки? Хотелось бы обращаться к id

<a href="#" id="zvonok">Звонок</a>


function attribute(){
			var form = document.getElementById('cl');
			if(form.style.display == 'none'){
				form.style.display = 'block';
			}else{
				form.style.display = 'none';
			}

Последний раз редактировалось bubanay, 23.04.2015 в 01:26.
Ответить с цитированием
  #2 (permalink)  
Старый 23.04.2015, 01:23
Интересующийся
Отправить личное сообщение для vuchastyi Посмотреть профиль Найти все сообщения от vuchastyi
 
Регистрация: 22.04.2015
Сообщений: 25

$(function () {
         $('body').click(function() {
          $('div.popup'). hide();
           $('#overlay').remove('#overlay');});
	$('a.show_popup').click(function () {
		$('div.'+$(this).attr("rel")).fadeIn(500);
		$("body").append("<div id='overlay'></div>");
		$('#overlay').show().css({'filter' : 'alpha(opacity=80)'});
		return false;				
	});	
                    $('a.show_popup').click(function (event) {
                       event.stopPropagation();
		$(this).parent().fadeOut(100);
		$('#overlay').remove('#overlay');
		return false;
	});};

Последний раз редактировалось vuchastyi, 23.04.2015 в 01:31. Причина: каляки-маляки
Ответить с цитированием
  #3 (permalink)  
Старый 23.04.2015, 01:28
Интересующийся
Отправить личное сообщение для bubanay Посмотреть профиль Найти все сообщения от bubanay
 
Регистрация: 20.12.2013
Сообщений: 10

без jquery не обойтись?
Ответить с цитированием
  #4 (permalink)  
Старый 23.04.2015, 01:33
Интересующийся
Отправить личное сообщение для vuchastyi Посмотреть профиль Найти все сообщения от vuchastyi
 
Регистрация: 22.04.2015
Сообщений: 25

http://ru.stackoverflow.com/question...не-окна
Ответить с цитированием
  #5 (permalink)  
Старый 23.04.2015, 08:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Закрытие модального окна по клику мимо него
bubanay,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
     #cl.show {  visibility: visible; opacity: 1; }
     #cl{
    background-color: #D2B48C;
	border: 3px solid #8B4513;
	display: inline-block;
	left: 50%;
	opacity: 0;
	padding: 15px;
	width: 300px;
	height: 323px;
	position: fixed;
	text-align: justify;
	top: 40%;
	visibility: hidden;
	z-index: 999999;
	-webkit-transform: translate(-50%, -50%);
	-moz-transform: translate(-50%, -50%);
	-ms-transform: translate(-50%, -50%);
	-o-transform: translate(-50%, -50%);
	transform: translate(-50%, -50%);
	-webkit-transition: opacity .5s, top .5s;
	-moz-transition: opacity .5s, top .5s;
	-ms-transition: opacity .5s, top .5s;
	-o-transition: opacity .5s, top .5s;
	transition: opacity .5s, top .5s;
	border-radius: 11px;
     }

  </style>
  <script>
     function init()
     {
    var form = document.getElementById('cl'), tel = document.getElementById('zvonok');
    document.onclick = function(event) {
    var elem = event.target;
    event.target === tel && form.classList.toggle("show");
    if (elem === form || form.contains(elem) || event.target === tel) return false;
    form.classList.remove("show");
}
     }
     window.onload = init;
  </script>
</head>

<body>
<a href="#" id="zvonok">Звонок</a>
<div id="cl"> <form action="http://">
      <h4>test</h4>
</form>
</div>

</body>

</html>
Ответить с цитированием
  #6 (permalink)  
Старый 23.04.2015, 23:15
Интересующийся
Отправить личное сообщение для bubanay Посмотреть профиль Найти все сообщения от bubanay
 
Регистрация: 20.12.2013
Сообщений: 10

а если на странице не 1 открывающийся блок, а несколько? Каждый из которых должен открываться по своей ссылке
<body>
		<a href="#" id="zvonok">Звонок</a>
		<div id="cl"> 
			<h4>test</h4>
		
		</div>
		
		<a href="#" id="zvonok2">Звонок2</a>
		<div id="cl2"> 
			<h4>test2</h4>
		
		</div>
		
		<a href="#" id="zvonok3">Звонок3</a>
		<div id="cl3"> 
			<h4>test3</h4>
		
		</div>
		
	</body>

Весь день пытался решить эту задачу. Как сделать универсально? Как такие задачи вообще правильно решаются?
Ответить с цитированием
  #7 (permalink)  
Старый 23.04.2015, 23:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от bubanay
Каждый из которых должен открываться по своей ссылке
а закрываться ?
Ответить с цитированием
  #8 (permalink)  
Старый 24.04.2015, 00:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Открывашка 214 для модальных окон

<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
     .cl.show {  visibility: visible; opacity: 1; }
     .cl{
    background-color: #D2B48C;
	border: 3px solid #8B4513;
	display: inline-block;
	left: 50%;
	opacity: 0;
	padding: 15px;
	width: 300px;
	height: 323px;
	position: fixed;
	text-align: justify;
	top: 40%;
	visibility: hidden;
	z-index: 999999;
	-webkit-transform: translate(-50%, -50%);
	-moz-transform: translate(-50%, -50%);
	-ms-transform: translate(-50%, -50%);
	-o-transform: translate(-50%, -50%);
	transform: translate(-50%, -50%);
	-webkit-transition: opacity .5s, top .5s;
	-moz-transition: opacity .5s, top .5s;
	-ms-transition: opacity .5s, top .5s;
	-o-transition: opacity .5s, top .5s;
	transition: opacity .5s, top .5s;
	border-radius: 11px;
     }

  </style>
  <script>
     function init() {
         var form = document.querySelectorAll('.cl'),
             tel = document.querySelectorAll('.zvonok'),
             open;
         document.onclick = function(event) {
             var elem = event.target;
             if (open && (elem === open || open.contains(elem))) return false;
             if (elem.classList.contains('zvonok')) {
                 for (var i = 0; i < tel.length; i++) {
                     if (elem === tel[i]) break
                 }
                 if (open && open !== form[i]) open.classList.remove("show");
                 open = form[i];
                 open.classList.toggle("show");
                 return false;
             }
           open &&   open.classList.remove("show");
         }
     }
     window.onload = init;
  </script>
</head>

<body>
<a href="#" class="zvonok" >Звонок</a>
		<div class="cl">
			<h4>test</h4>

		</div>

		<a href="#" class="zvonok">Звонок2</a>
		<div class="cl">
			<h4>test2</h4>

		</div>

		<a href="#" class="zvonok">Звонок3</a>
		<div class="cl">
			<h4>test3</h4>

		</div>


</body>

</html>

Последний раз редактировалось рони, 24.04.2015 в 00:32.
Ответить с цитированием
  #9 (permalink)  
Старый 26.04.2015, 07:13
Аватар для rikitiki
Интересующийся
Отправить личное сообщение для rikitiki Посмотреть профиль Найти все сообщения от rikitiki
 
Регистрация: 10.05.2013
Сообщений: 20

рони огромное спасибо вам за помощь!
Попробовал использовать в Wordpress упрощённный код из вашего поста #5.
Однако не получается
Я уже упоминал в соседней теме, что пытаюсь заставить открываться и закрываться в меню форму поиска, как в меню на этом сайте: http://algolux.com/news/. При этом в моём случае плавная анимация не нужна, и мне теперь уже безразлично, что будет использоваться - чистый js или jquery. Лишь бы работало.
Сейчас выдрал из своего тестового сайта http://cosmetic.besaba.com/ кусок меню с текстовой кнопкой "Поиск" и формой поиска.
Код вместе с вашим скриптом из поста #5, в который я подставил свои классы, привожу ниже.
Для наглядности, в коде ниже и на сайте, чтобы видеть как выглядит форма поиска, свойство visibility: hidden в диве box закомментировано. Но убираю комментирование, форма становится невидимой, тыкаю в Поиск и ничего не происходит.
!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
	 
a.search-link {
    cursor: pointer;
	text-transform: uppercase;
 /* font-family: IcoMoon;  */
}

.box {
    font-size: 0;
    left: 100px;
    padding: 10px;
	margin-left: 10px;
    position: absolute;
    right: 0;
    text-align: right;
    width: 300px;
    z-index: 99999;
/*	visibility: hidden; */
}

.box.show {  visibility: visible; opacity: 1; }

ul{
	list-style-type: none;
}

li{
	display: inline-block;
     margin: 0 2.85714rem 0 0;
     position: relative;
	}

  </style>
  <script>
     function init()
     {
    var form = document.getElementById('box'), tel = document.getElementById('search-link');
    document.onclick = function(event) {
    var elem = event.target;
    event.target === tel && form.classList.toggle("show");
    if (elem === form || form.contains(elem) || event.target === tel) return false;
    form.classList.remove("show");
}
     }
     window.onload = init;
  </script>
</head>

<body>

<ul>
<li>
<a id="main-nav-search-link" class="search-link">Параллакс</a>
</li>
<li>
<a id="main-nav-search-link" class="search-link">Поиск</a>
<div class="box">
<form class="menu-search-form" action="http://cosmetic.besaba.com/" method="get">
<p>
<input id="s" class="text" type="text" onblur="if (this.value == '') {this.value = 'Кто Ищет, Тот Найдет !';}" onfocus="if (this.value == 'Кто Ищет, Тот Найдет !') {this.value = '';}" name="s" value="Кто Ищет, Тот Найдет !">
<input id="searchsubmit" class="my-wp-search" type="submit" value="Искать">
</p>
</form>
</div>
</li>
</ul>

</body>

</html>


Нашёл ещё один ваш вариант: Проблема с toogleClass при выделении активной сылки по нажатию.
Но там лишний код для моего случая и navbar bootstrap используется.

Последний раз редактировалось rikitiki, 26.04.2015 в 10:14.
Ответить с цитированием
  #10 (permalink)  
Старый 26.04.2015, 10:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

rikitiki,

<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">

a.search-link {
    cursor: pointer;
	text-transform: uppercase;
 /* font-family: IcoMoon;  */
}

#box {
    font-size: 0;
    left: 100px;
    padding: 10px;
	margin-left: 10px;
    position: absolute;
    right: 0;
    text-align: right;
    width: 300px;
    z-index: 99999;
visibility: hidden;
}

#box.show {  visibility: visible; opacity: 1; }

ul{
	list-style-type: none;
}

li{
	display: inline-block;
     margin: 0 2.85714rem 0 0;
     position: relative;
	}

  </style>
  <script>
     function init()
     {
    var form = document.getElementById('box'), tel = document.getElementById('search-link'), submit = document.getElementById('searchsubmit');
    document.onclick = function(event) {
    var elem = event.target;
    elem === tel && form.classList.toggle("show");
    if(elem === submit) return true;
    if (elem === form || form.contains(elem) || event.target === tel) return false;
    form.classList.remove("show");
}
     }
     window.onload = init;
  </script>
</head>

<body>

<ul>
<li>
<a id="main-nav-search-link" class="">Параллакс</a>
</li>
<li>
<a id="search-link">Поиск</a>
<div id="box">
<form class="menu-search-form" action="http://cosmetic.besaba.com/" method="get">
<p>
<input id="s" class="text" type="text" onblur="if (this.value == '') {this.value = 'Кто Ищет, Тот Найдет !';}" onfocus="if (this.value == 'Кто Ищет, Тот Найдет !') {this.value = '';}" name="s" value="Кто Ищет, Тот Найдет !">
<input id="searchsubmit" class="my-wp-search" type="submit" value="Искать">
</p>
</form>
</div>
</li>
</ul>

</body>

</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение уровня прозрачности блока TRos Events/DOM/Window 7 03.05.2013 11:57
Изменение свойств одного блока при наведении курсора на другой latter-day Events/DOM/Window 4 01.04.2013 18:35
изменение размера блока dimiork Элементы интерфейса 1 08.01.2011 21:01
коррекция кода harek13 jQuery 1 16.12.2010 17:13
плавное изменение размера блока alexk984 jQuery 4 29.11.2010 08:46