Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   как определить по кому кликнули при событие blur (https://javascript.ru/forum/jquery/40680-kak-opredelit-po-komu-kliknuli-pri-sobytie-blur.html)

FanAizu 15.08.2013 12:51

как определить по кому кликнули при событие blur
 
Мне нужно в обработчике blur-а как-то определить по какому элементу произошел клик и в результате было вызвано событие blur у текущего инпута. Подскажите, пожалуйста, как это можно узнать. Спасибо.

danik.js 15.08.2013 13:13

1) Событие blur возникает не только из-за клика. Например при переходе TAB'ом.
2) Событие blur возникает раньше события click, поэтому, без машины времени тебе не обойтись. Как соберешь машину - приходи, поможем.

Однако целевой элемент можно узнать в событии mousedown, предшествующему событию blur и click. Но опять же, не всякому click'у предшествует mousedown...

FanAizu 16.08.2013 16:01

Цитата:

Сообщение от danik.js (Сообщение 267665)
Однако целевой элемент можно узнать в событии mousedown, предшествующему событию blur и click. Но опять же, не всякому click'у предшествует mousedown...

1) Что означает "не всякому click'у предшествует mousedown..."?
2) А mouseup тоже предшествует событию blur?
3) И во всех ли браузерах во всех ОС событие mousedown предшествует событию blur?

danik.js 16.08.2013 17:38

Цитата:

Сообщение от FanAizu
1) Что означает "не всякому click'у предшествует mousedown..."?

Событие click на кнопках/ссылках можно вызвать с клавиатуры нажатием Enter. Не забывайт также про touch-устройства
Цитата:

Сообщение от FanAizu
А mouseup тоже предшествует событию blur?

Нет. mousedown -> blur -> mouseup -> click

beerdy 23.07.2014 20:12

Продолжу тему. Есть вот это:
$('#dynamicbody').on('click','.mindcomment',function(){
			var mind_data_tosrv = new Object();
			mind_data_tosrv['action'] = 'comment';

			$.ajax({
				type: "POST",
				url: "http://чччч.ru/mind",
				contentType: "application/json; charset=UTF-8",
				data: JSON.stringify(mind_data_tosrv),
				success: function(data){

				}
			});

		});

		var focus = false;

		$('#dynamicbody').on('blur','.mindcommentarrea',function(event) {
			alert(event.target);
			if(focus){
				var id = ($(this).attr('id')).substring(2);
				$('#mc'+id).css("display","none");
				
				$(this).css({"height":"15px","width":"290px"});
				focus = false;
				
			}
		}).on('focus','.mindcommentarrea',function() {
			if(!focus){
				var id = ($(this).attr('id')).substring(2);
				$('#mc'+id).css("display","block");
				
				$(this).css({"height":"120px","width":"340px"});
				focus = true;
				
			}
		});

т.е. при клике на текстареа она увеличивается и появляется кнопка.

Потом. Нужно сделать так чтобы при клике на эту кнопку, текстареа не сворачивалась по blur а отрабатывала событие кнопки вперед.

Может быть можно как то
1) перехватить событие blur
2) сохранить его в "переменную" (или куда еще)
3) отработать клик
4) возобновить событие blur
???


Часовой пояс GMT +3, время: 02:11.