 
			
				27.07.2015, 22:44
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.05.2015 
					
					
					
						Сообщений: 74
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Скрыть div блок по событию перемещение курсора или клика
			 
			
		
		
		
		Добрый день. Прошу помощи. 
Есть div блок который появляется если ввести букву в поле input. 
Прошу подсказать с кодом, который бы скрывал это div блок если курсор был перемещен (с помощью tab кнопки) в другое поле input или был нажат клик мимо этого div блока (если был сделан клик в сам этот div блок, то он не пропадал бы). 
Буду благодарен за помощь. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				27.07.2015, 22:55
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Я же задавал вопрос - даже если поле становится активным при tab, то разве это не означает, что оно получило фокус? А если получило, то какое событие возникает? 
 
Ну напишите вы свой код как единое целое, а не кусками, определитесь с элементами их взаимодействием, так чтобы сразу установить обработчики всем событиям возникающим в вашей задаче. Плагины ведь так пишут, а не "вне их" еще и куча обработчиков. 
 
Кто же вам мешает при получении фокуса элементом, скрыть все div у других элементов кроме принадлежащего текущему input? А если принадлежит input, то почему обработка его поведения должна описывается через ХХХХ строчек кода? 
 
А как действовать при щелчке вне элемента вы уже знаете. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.07.2015, 10:01
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.05.2015 
					
					
					
						Сообщений: 74
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Хоть и на писано, что я аспирант, но это не так...скорее абитуриент (хотя и не факт еще)... 
вобщем есть пока вот такой код (код появления  при вводе символа-буквы здесь не указываю):
 
$(document).focusout(function(event){
			if( $(event.target).closest("#autocomplete").length ) 
			return;
			$("#autocomplete").fadeOut("slow");
			event.stopPropagation();
			});
 
при нажатие кнопки tab (перемещение в другой input) div-блок скрывается, так же при клике скрывается, но хотелось бы, что если клик в сам div блок, то он не скрывается.
 
<div id="autocomplete"></div>
  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.07.2015, 10:43
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от ivnjavascript
			
		
	 | 
 
	| 
		вобщем есть пока вот такой код
	 | 
 
	
 
 Плохо что такой. А может все таки так: получение фокуса - если элемент не имеет управления (сопутствующие элементы для задачи), добавляем его и устанавливаем соответствующие обработчики, иначе выполнение операций, среди которых скрываем элементы управления у других полей, для которых также определена эта задача?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.07.2015, 23:05
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.05.2015 
					
					
					
						Сообщений: 74
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 если Вам не сложно, можно тоже самое только другими словами и если с кодом, то может больше понимание появиться. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.08.2015, 11:58
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.05.2015 
					
					
					
						Сообщений: 74
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		вот пока такая наработка: 
$(document).click(function(event) {
			if ($(event.target).closest("#autocomplete").length) return;
			$("#autocomplete").fadeOut("slow");
			event.stopPropagation();
		  });
$("#pass3").focusin(function(event){
			if( $(event.target).closest("#autocomplete").length ) 
			return;
			$("#autocomplete").fadeOut("slow");
			event.stopPropagation();
			});
хотелось бы что в самом inpute pass2 не реагировал на клик  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				07.08.2015, 08:11
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от ivnjavascript
			
		
	 | 
 
	| 
		хотелось бы что в самом inpute pass2
	 | 
 
	
 
 И где же он упоминается?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.08.2015, 16:13
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.05.2015 
					
					
					
						Сообщений: 74
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
<form method="post" action="add_finish.php"  name="formName">
<input class="addrs" type="text" name="addrs"  placeholder=" Введите " type="search"  value="" id="pass2"/>
<input class="addrs" type="text" name="addrs"  placeholder=" Введите " type="search"  value="" id="pass3"/>
</form>
<div id="autocomplete"></div>
 
if ($(event.target).closest("#autocomplete").length) return;
			if(event.target.id != 'pass2') $("#autocomplete").fadeOut("slow");
			event.stopPropagation();
		  });
			
$("#pass3").focusin(function(event){
			if( $(event.target).closest("#autocomplete").length ) 
			return;
			$("#autocomplete").fadeOut("slow");
			event.stopPropagation();
			});
еще вот вопрос появился...обратил внимание, что если в другом input-е есть значение и как бы кликнуть туда мышкой и сразу выделить это значение, то это уже событие не является кликом????  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				12.08.2015, 05:06
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от ivnjavascript
			
		
	 | 
 
	| 
		то это уже событие не является кликом
	 | 
 
	
 
 А чем?   
Событие onclick, это вообще-то результат двух событий - onmousedown и onmouseup, которые наступают по очереди. Все эти три события есть не потому, что это закономерность и иначе нельзя, а потому, что это определено разработчиками программ и "железяк". Правильнее будет "эти три события генерируются системой". С таким же успехом можно было бы добавить генерацию еще двух событий вкупе к этим трем: "как бы нажата кнопка мыши - onasifmousedown" и "как бы отпущена кнопка мыши - onasifmouseup".
 
Система не мгновенно генерирует события в ответ на нажатия кнопок, а сначала возникает  аппаратное прерывание, затем контроллер устройства обрабатывает так называемый "дребезг контактов", формируя некоторую задержку, в течении которой постоянно опрашивает порт вызвавший это прерывание. Если по истечению этой задержки кнопка останется нажатой, тогда принимается решение - "да, есть нажатие". И только затем это событие отдается системе, но система генерирует уже  программное прерывание. И уж как его обозвать, это решается в зависимости от устройства и его драйвера. Вот за мышкой и закреплен набор стандартных для нее событий порожденных аппаратными прерываниями, но не проблема добавить еще кучу новых, наворотив супер мышку и написав для нее драйвер.
 
Так что события породившее щелчок мыши никуда не денутся, а вот выделение текста, это уже чисто программное прерывание, то бишь событие, которое порождается системой или ПО. Нужно только отлавливать события и никуда они не денутся, и "перерождаться" во что-то иное не будут.  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось laimas, 12.08.2015 в 05:09.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.08.2015, 17:07
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.05.2015 
					
					
					
						Сообщений: 74
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от laimas
			 
		
	 | 
 
	
		А чем?   
 
Событие onclick, это вообще-то результат двух событий - onmousedown и onmouseup, которые наступают по очереди. Все эти три события есть не потому, что это закономерность и иначе нельзя, а потому, что это определено разработчиками программ и "железяк". Правильнее будет "эти три события генерируются системой". С таким же успехом можно было бы добавить генерацию еще двух событий вкупе к этим трем: "как бы нажата кнопка мыши - onasifmousedown" и "как бы отпущена кнопка мыши - onasifmouseup". 
 
Система не мгновенно генерирует события в ответ на нажатия кнопок, а сначала возникает аппаратное прерывание, затем контроллер устройства обрабатывает так называемый "дребезг контактов", формируя некоторую задержку, в течении которой постоянно опрашивает порт вызвавший это прерывание. Если по истечению этой задержки кнопка останется нажатой, тогда принимается решение - "да, есть нажатие". И только затем это событие отдается системе, но система генерирует уже программное прерывание. И уж как его обозвать, это решается в зависимости от устройства и его драйвера. Вот за мышкой и закреплен набор стандартных для нее событий порожденных аппаратными прерываниями, но не проблема добавить еще кучу новых, наворотив супер мышку и написав для нее драйвер. 
 
Так что события породившее щелчок мыши никуда не денутся, а вот выделение текста, это уже чисто программное прерывание, то бишь событие, которое порождается системой или ПО. Нужно только отлавливать события и никуда они не денутся, и "перерождаться" во что-то иное не будут.
	 | 
 
	
 
 Спасибо, буду иметь ввиду.  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |