Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: как определить по кому кликнули при событие blur

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Pavelbeginner
Отправлено: 15 Августа, 2013 - 11:00:49
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




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

И подскажите, пожалуйста, что раньше происходит blur или click? Какое из этих событий обрабатывается первым.

(Отредактировано автором: 15 Августа, 2013 - 11:04:43)

 
 Top
teddy
Отправлено: 15 Августа, 2013 - 11:02:28
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




this
 
 Top
Pavelbeginner
Отправлено: 15 Августа, 2013 - 11:05:31
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




teddy пишет:
this
Что this? this будет указывать на инпут, который потерял фокус.
 
 Top
armancho7777777 Супермодератор
Отправлено: 15 Августа, 2013 - 11:07:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Pavelbeginner пишет:
что раньше происходит blur или click

А самому проверить не судьба ?
 
 Top
EuGen Администратор
Отправлено: 15 Августа, 2013 - 11:08:03
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Pavelbeginner
Вам нужна передача параметров событию. Пример есть здесь


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
armancho7777777 Супермодератор
Отправлено: 15 Августа, 2013 - 11:08:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




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

Ничего не понял...
 
 Top
Pavelbeginner
Отправлено: 15 Августа, 2013 - 11:09:06
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




armancho7777777 пишет:
Pavelbeginner пишет:
что раньше происходит blur или click

А самому проверить не судьба ?
Ну что за ответ блин. Сам миллион раз проверить могу, да хоть 2 миллиона раз, но я не буду уверен, что во всех браузерах, во всех версиях будет одинаковое поведение. Поэтому и спрашиваю в догонку к основному вопросу. Боже мой, ну сколько можно наезжать, вместо того, чтобы давать полезную информацию?
(Добавление)
armancho7777777 пишет:
Pavelbeginner пишет:
Мне нужно в обработчике blur-а как-то определить по какому элементу произошел клик и в результате было вызвано событие blur у текущего инпута.

Ничего не понял...

Опять хотите сказать, что неясно сформулировал вопрос?
В инпуте установлен фокус. Кликнули куда-то и произошла потеря фокуса, в обработчике blur мне нужно определить по какому элементу dom кликнули и инпут потерял фокус.
 
 Top
armancho7777777 Супермодератор
Отправлено: 15 Августа, 2013 - 11:13:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Pavelbeginner, потому что Вы ленивы.
Эта тема ни первая Ваша.
Вам проще на форуме спросить, чем самому проверить.
Pavelbeginner пишет:
но я не буду уверен, что во всех браузерах

Запустить код в каждом из популярных браузеров по разу будет достаточно.
Тем более что этот вопрос я затрагивал в Вашей предыдущей теме:
http://forum.php.su/topic.php?fo...57163#1376057163
 
 Top
IllusionMH
Отправлено: 15 Августа, 2013 - 11:14:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)





Pavelbeginner, такое ощущение, что все тут сидят и днями во всех браузерах все подгоняют по пикселям и миллисекундам.
Проверили в основных браузерах, норм работает. Сверились со спекой, все ок.
Не нужно с каждым вопросом про кроссбраузерность лезть на форум (caniuse, quirksmode, SO в помощь)
Вот когда найдете несоответствие которое не решается, лучше тогда спросите.
 
 Top
armancho7777777 Супермодератор
Отправлено: 15 Августа, 2013 - 11:21:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Pavelbeginner пишет:
Опять хотите сказать, что неясно сформулировал вопрос?

Конечно.
Вопрос размытый, можно его понять по разному.

Pavelbeginner пишет:
В инпуте установлен фокус. Кликнули куда-то и произошла потеря фокуса, в обработчике blur мне нужно определить по какому элементу dom кликнули и инпут потерял фокус.

Вот, другое дело.

Так как событие blur возникает раньше события click, то можно например так:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $("input:text").blur(function(event) {
  3.         $(document).one('click', function(e) {
  4.                 alert(e.target.nodeName);
  5.         });
  6. });  
  7.  


P.S. Если не ошибаюсь, библиотека jQ у Вас подключена.
 
 Top
Pavelbeginner
Отправлено: 15 Августа, 2013 - 11:47:38
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




armancho7777777 пишет:

$("input:text").blur(function(event) {
$(document).one('click', function(e) {
alert(e.target.nodeName);
});
});


Как это может помочь? Внутри обработчика blur устанавливается обработчик click-а, который будет вызван уже после того, как завершится обработчик blur-а...
 
 Top
armancho7777777 Супермодератор
Отправлено: 15 Августа, 2013 - 11:48:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Pavelbeginner пишет:
который будет вызван уже после того, как завершится обработчик blur-а...

И ? Улыбка
armancho7777777 пишет:
событие blur возникает раньше события click,

Я же говорю, Вы формулируете вопрос размыто.
Вы же не писали, что Вам надо определить щелчок мыши прежде, чем произайдёт событие blur...
Может показаться, что в данном случае требуется событие mousedown, а не click, так как оно происходит раньше,
но в таком случае источником события будет само поле.
Так что ничего не выйдет.
Да и это противоречит здравой логике: Вы хотите определить потерю фокуса прежде, чем произошёл тот клик мыши, который вызвал потерю фокуса. Вдумайтесь...
Вы лучше опишите всю задачу, а ни её мизерную часть.

Pavelbeginner пишет:
Как это может помочь?

Может Вам так будет понятнее:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(function(){
  3.         $("input:text").blur(function(event) {
  4.                 $(document).one('click', function(e) {
  5.                         alert('Поле потеряло фокус из-за ' + e.target.nodeName);
  6.                 });
  7.         });
  8. });
  9.  

Это ответ на Ваш вопрос:
Pavelbeginner пишет:
В инпуте установлен фокус. Кликнули куда-то и произошла потеря фокуса, в обработчике blur мне нужно определить по какому элементу dom кликнули и инпут потерял фокус.

"Кто не согласен, пусть кинет в меня камень", - как сказал бы Остап Бендер Радость
 
 Top
Pavelbeginner
Отправлено: 15 Августа, 2013 - 13:14:33
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




Задача следующая:

Есть форма логина. Инпуты в этой форме валидируются по событию blur(точнее валидируется только один инпут потерявший фокус). Также валидация уже всех полей происходит по собмиту кнопки. Кнопке сабмита добавляется класс disabled во время начала валидации, и в ф-цие валидации идет проверка установлен ли у кнопки сабмита этот класс или нет и, если установлен, то делаем return. В конце же валидации этот класс disabled убирается с кнопки, чтобы можно было начать еще одну валидацию по нажатию.

Так вот, если пользователь ввел в инпут данные, затем нажал куда-нибудь на странице, то происходит событие blur и происходит валидация поля. Все хорошо. Но, пользователь может после ввода данных в инпут нажать на кнопку сабмита и последовательность действий такова:
в обработчике события blur мы лочим кнопку сабмита классом disabled. Т.к. в ф-цие валидации присутствуют аякс запросы, то валидация может не закончиться и начнет обрабатываться событие click кнопки сабмита. И снова будет вызвана ф-ция валидации в обработчике click-а. Но т.к. у кнопки установлен класс disabled, то ф-ция не отрабатывает.

Чтобы эта ф-ция отработала я хочу в обработчике blur-а сделать проверку по кнопке сабмита был клик или нет и, если да, то в конце обработчика blur вызвать валидацию формы.
 
 Top
armancho7777777 Супермодератор
Отправлено: 15 Августа, 2013 - 13:23:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Pavelbeginner, попробуйте повесить на кнопку не событие click, а mousedown.
Так же можно использовать флаг для проверки прошла ли валидация, по событию кнопки mousedown.
Покажите код, а то приходится гадать.
 
 Top
DelphinPRO
Отправлено: 15 Августа, 2013 - 13:44:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




вы забываете о том, что пользователь может просто нажать ENTER, а не кликать
я думаю стоит отслеживать событие onsubmit, в котором прерывать все обработчики фалидации и проверять форму целиком.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB