Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 22.01.2015, 08:36
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

skrudjmakdak, если меню будет исчезать плавно через transition, то увидим по идее. Или скрывать меню не сразу, по минимальному setTimeout`у.

Но я бы на твоём месте забыл про blur, сделал бы по клику и проверял бы, что если клик произошёл не по input, то меню скрываем, а если по input - открываем.

<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
    <input id="test" type="text">
    <div id="menu" style="border: 1px solid #555; display: none; height: 100px; width: 170px"></div>

    <script>
      var menuIsHide = true;
      
      window.addEventListener('click', function(e) {
        var self = e.target;
        if(self.id == 'test' == menuIsHide) {
          menu.style.display = menuIsHide ? 'block' : 'none';
          menuIsHide = !menuIsHide;
        }
      });
    </script>

  </body>
</html>
Ответить с цитированием
  #12 (permalink)  
Старый 22.01.2015, 08:41
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

ну без таба у меня и так работает)))
Ответить с цитированием
  #13 (permalink)  
Старый 22.01.2015, 08:50
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

skrudjmakdak,

<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
    <input id="test" type="text">
    <div id="menu" style="border: 1px solid #555; display: none; height: 100px; width: 170px"></div>

    <script>
      var menuIsHide = true;
      
      test.onblur = function() {
        menu.style.display = 'none';
        menuIsHide = true;
      };
      
      window.addEventListener('click', function(e) {
        var self = e.target;
        if(self.id == 'test' == menuIsHide) {
          menu.style.display = menuIsHide ? 'block' : 'none';
          menuIsHide = !menuIsHide;
        }
      });
    </script>

  </body>
</html>
Ответить с цитированием
  #14 (permalink)  
Старый 22.01.2015, 08:53
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Или так:

<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
    <input id="test" type="text">
    <div id="menu" style="border: 1px solid #555; display: none; height: 100px; width: 170px"></div>

    <script>
      var menuIsHide = true;
      
      window.onclick = test.onblur = function(e) {
        var self = e.target;
        if(e.type == 'blur' || (self.id == 'test' == menuIsHide)) {
          menu.style.display = menuIsHide ? 'block' : 'none';
          menuIsHide = !menuIsHide;
        }
      };
    </script>

  </body>
</html>
Ответить с цитированием
  #15 (permalink)  
Старый 22.01.2015, 09:20
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

посм чуть попозже, ща занят
Ответить с цитированием
  #16 (permalink)  
Старый 22.01.2015, 10:40
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Ruslan_xDD
menuIsHide
Ну ты индеец )) menuIsHidden ("меню скрыто", а не "меню есть скрыть")
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #17 (permalink)  
Старый 22.01.2015, 10:46
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

danik.js, сам индеец. Я в английском не силён, так что пофиг.
Ответить с цитированием
  #18 (permalink)  
Старый 22.01.2015, 10:57
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

я задолблю)) не работает, выше писал почему

<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
    <input id="test" type="text">
    <div id="menu" style="border: 1px solid #555; display: none; height: 100px; width: 170px" onclick="c(event)">
		<div>1</div>
		<div>2
			<div>2.1</div>
			<div>2.2</div>
			<div>2.3</div>
		</div>
		<div>3</div>
	</div>

    <script>
      var menuIsHide = true;
      
      window.onclick = test.onblur = function(e) {
        var self = e.target;
        if(e.type == 'blur' || (self.id == 'test' == menuIsHide)) {
          menu.style.display = menuIsHide ? 'block' : 'none';
          menuIsHide = !menuIsHide;
        }
      };
	  function c(e) {
		console.log(e.target);
	  }
    </script>

  </body>
</html>


очередь событий
Ответить с цитированием
  #19 (permalink)  
Старый 22.01.2015, 11:31
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

skrudjmakdak, если blur убрать, то работает. Наверное проще просто запретить табуляцию по полю.
Ответить с цитированием
  #20 (permalink)  
Старый 22.01.2015, 11:46
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
    <input id="test" type="text">
    <div id="menu" style="border: 1px solid #555; display: none; height: 100px; width: 170px" onclick="c(event)">
		<div>1</div>
		<div>2
			<div>2.1</div>
			<div>2.2</div>
			<div>2.3</div>
		</div>
		<div>3</div>
	</div>

    <script>
      var menuIsHidden = true;
      
      window.onclick = window.onkeydown = function(e) {
        var self = e.target;
        if(self.id == 'test' == (menuIsHidden || e.type == 'keydown' && e.keyCode == 9)) {
          menu.style.display = menuIsHidden ? 'block' : 'none';
          menuIsHidden = !menuIsHidden;
        }
      };
      
      
	  function c(e) {
		console.log(e.target);
	  }
    </script>

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очередь XML запросов Евгений М AJAX и COMET 4 01.02.2012 11:05
Переопределение событий lispik jQuery 4 13.01.2011 12:30
Скопировать обработчики событий с одного элемента на другой. Jurasmi Events/DOM/Window 3 10.11.2010 19:03
очередь событий прерывается alertом puchu Events/DOM/Window 8 16.07.2010 00:54
Очередь событий Petka jQuery 2 03.03.2010 12:21