Как узнать куда кликнули при blur
Есть элемент (<input type="text" />). К нему привязано событие onblur. Кто нибудь знает как кроссбраузерно получить данные об элементе по которому кликнули в обработчике этого события onblur ?
|
kolyan1983,
легко <script type="text/javascript"> document.i = 0; function blu(e){ if (document.i != 5){return;} var e = e || window.event; var target = e.target || e.srcElement; alert(target); } document.onclick = blu; </script> <div>Щелкни по мне</div> <input type="text" onblur="document.i = 5;" onfocus="document.i = 0;"> |
<div>Щелкни по мне</div> <input type="text" onblur="alert(event.explicitOriginalTarget || event.toElement)"> Первое ff, второе ie. Хз, как в других браузерах, лень смотреть.) |
Aetae,
у меня при клике на див - [object HTMLDivElement] у тебя [object Text], а вообще интересно какими браузерами поддерживается? |
Цитата:
Вообще в любом случае твой вариант лучше ибо универсальнее.) Цитата:
|
Aetae,
Цитата:
Цитата:
Цитата:
|
В контексте моей задачи не тот ни другой вариант не работает/не подходит. Хотелось бы узнать возможно ли в принципе как то так для всех браузеров:
$('#element').blur(function(event){ var clickedElementClass = ... }); |
kolyan1983,
мой вариант и вариант Aetae вполне подходят :) <script type="text/javascript"> function your_function(target){//ваша функция принимающая элемент alert(target.getAttribute("id")); } document.i = 0; function blu(e){ if (document.i != 5){return;} var e = e || window.event; var target = e.target || e.srcElement; your_function(target);//вызывайте свою функцию с тем элементом (который вам нужен) //и там получайте его свойства } document.onclick = blu; </script> <div id="Это ид дива по которому ты щелкнул">Щелкни по мне что бы вызвалась твоя функция которая алертит мой ид</div> <input type="text" onblur="document.i = 5;" onfocus="document.i = 0;"> ваш вариант сделать нельзя ибо с блур-а вы сможете получить только тот же элемент на котором блур произошел возможно в будущем такое будет можно так сделать :) |
kolyan1983,
и так можно получить все свойства ;) |
Не говорят хрень, а спрашивают. Спрашивают потому что тупо не знают. Оба варианта не подходят потому что придётся переписывать кучу стороннего кода jquery плагинов.
|
Цитата:
Цитата:
здесь при чем тут плагины - вы хотите получить свойства элемента - их можно получить в новой функции где передается target пример выше это наглядно показал ;) P.S. вы же читали код примера? |
"и так можно получить все свойства " - и как же получить элемент по которому кликнули?
|
Цитата:
|
kolyan1983,
не тупите пожалуйста! он же передается в вашу функцию и его можно алертить, вставлять и т.п.! <script type="text/javascript"> function your_function(target){//ваша функция принимающая элемент alert("Элемент по которому кликнули после блура" + target + "ID элемента" + target.getAttribute("id")); } document.i = 0; function blu(e){ if (document.i != 5){return;} var e = e || window.event; var target = e.target || e.srcElement; your_function(target);//вызывайте свою функцию с тем элементом (который вам нужен) //и там получайте его свойства } document.onclick = blu; </script> <div id="Это ид дива по которому ты щелкнул">Щелкни по мне что бы вызвалась твоя функция которая алертит мой ид</div> <input type="text" onblur="document.i = 5;" onfocus="document.i = 0;"> P.S. также можно сделать так что бы клик срабатывал только один раз после блур-а - тогда надо добавить document.i = 0; после var target = e.target || e.srcElement; P.P.S. не видел пост выше - щас отвечу |
kolyan1983,
что же вам надо посочувствовать ибо нормально найти и кроссбраузерно у вас не получиться ;) и потом нахрена нужен тот плагин который вы пишите (что он будет делать и практическая ценность)? |
ок. Я не пишу плагин. Задача требует приделать маскирование ввода в поле, к которому уже приделаны jquery validate + Query UI Datepicker. Получается конфликт. Вот и хотел немного подпилить плагин http://digitalbush.com/projects/masked-input-plugin/
|
kolyan1983,
ясно - тогда вам нужен не я - я не знаю JQ :) |
Вообще есть ещё такая штука как document.activeElement, но это не совсем то.
|
Aetae,
активный элемент :blink: :blink: |
<input onblur="setTimeout(function(){document.body.appendChild(document.createElement('div')).innerHTML=document.activeElement},10)"> <textarea onblur="setTimeout(function(){document.body.appendChild(document.createElement('div')).innerHTML=document.activeElement},10)"></textarea> Работает только с редактируемыми элементами и body. Таймаут нужен, т.к. в момент блюра ещё ни один элемент не успел получить фокуса. |
Aetae,
да это не то - ему же еще и дивы и т.п. нужно ;) |
Хз, он вроде с инпутами работает.)
Вообще не вижу проблемы навесить лишний обработчик на документ и и по онфокус сохранять внутренню переменную, которую и использовать. |
Aetae,
вот вот - то самое что я предлагал :) |
Часовой пояс GMT +3, время: 21:50. |