С Новым годом! Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 991
1

Разница событий event и click

16.09.2013, 15:00. Показов 1146. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Коллеги, всем привет!
Возник один вопрос по поводу срабатываний событий focus и click.
Представим себе простенькую процедуру, которая на нажатие тега <td> в таблице выводит его содержимое в alert:


Javascript
1
2
3
4
5
6
7
8
$(document).ready(function(){
 
$('td').on('click',function(event){
var x =$(this).text();
alert(x);
});
 
});
Все отлично работает. click отрабатывает без проблем. Но вот если я пытаюсь поставить фокус в тег <td> аналогичным образом, то почему то функция не отрабатывает:

Javascript
1
2
3
4
5
6
7
8
$(document).ready(function(){
 
$('td').on('focus',function(event){
var x =$(this).text();
alert(x);
});
 
});
Два вопроса:
1) Почему не работает focus, а click работает?
2) Может ли тег <td> вообще принимать фокус?

Коллеги, прошу по минимуму философии и побольше конкретики.


Я сейчас собираю табличный мини фреймворк, изучаю досконально возможности Jquery. Делаю грид аля эксель /аксесс. (на последнее это предложение комментариев не надо))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2013, 15:00
Ответы с готовыми решениями:

Обработка событий click
Здравствуйте, есть поле для настольной игры, подскажите, как сделать обработку клика для...

Связка событий hover и click
День добрый. Помогите решить сию задачку. Есть две формы с радио кнопками и по текстовому полю над...

Ember_js click event
Пытаюсь изучать фрэймворк ember.js. После создания нового приложения добавляю компонент...

Ошибка Event thread: click Error: Unhandled exception: [Object DOMException]
я не селен в ждава но очень охота чтобы работала страничка, вот после того как перешол на оперу 9...

2
632 / 440 / 67
Регистрация: 19.09.2012
Сообщений: 1,632
16.09.2013, 15:17 2
http://learn.javascript.ru/focus-blur
По умолчанию не все элементы поддерживают эти события. Перечень элементов немного рознится от браузера к браузеру, например, список для IE описан в MSDN. Но есть элементы, которые поддерживают фокусировку всегда. В первую очередь это те, c которыми посетитель может взаимодействовать: INPUT, SELECT, A и т.п.

С другой стороны, элементы для форматирования, такие как DIV, SPAN, TABLE и другие — по умолчанию не поддерживают это событие, т.е. на них нельзя «фокусироваться». Впрочем, существует способ включить фокусировку и для них.
1
547 / 377 / 16
Регистрация: 17.12.2009
Сообщений: 991
16.09.2013, 20:08  [ТС] 3
Вот кстати span то и поддерживает фокус что самое странное..если его запихнуть внутрь td, как контейнер, то все работать начинает.
Как понимаю это именно фишка Jquery, а не чистого javascript.
Представьте, что у вас есть некая таблица, любая ,в формате html.
И я хочу чтобы в фокусе на ячейку <td> выводился редактируемый <input> (ну чтобы прямо там можно было все редактировать не отходя от кассы).
Все норма, работает следующая процедура:

Javascript
1
2
3
4
5
6
7
8
9
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
....
<script type="text/javascript">
$('table').on('focus','td span', function GotFocus(event){
var span=$(this), parent=span.parent();
parent.html('<input type="text" tabindex="1" value=" '+ span.text() +' ">');
parent.children('input').focus();
});
</script>
Заметил интересную и непонятную закономерность, если я tabindex в <span> и <input> добавляю то процедура отлично срабатывает. Как только убираю данный атрибут, то перестает работать. Не могу понять почему. Event и this в данном контексте должны не зависеть от табиндекса. Странно..
0
16.09.2013, 20:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.09.2013, 20:08
Помогаю со студенческими работами здесь

Ошибка в window.captureEvents(Event.CLICK); window.onClick= handle; function handle(e) { alert(''); return false; }
&lt;script&gt; window.captureEvents(Event.CLICK); window.onClick= handle; function handle(e) { ...

Разница между кликом по radio и програмным кликом click()
Какая разница между кликом по input type=&quot;radio&quot; и програмним кликом $(&quot;input&quot;)click();

если .click один - одна функция, .click еще раз и другая
как сделать чтоб она проверило .click первый и если он выполнен, то уже при втором клике,...

event.returnValue is deprecated. Please use the standard event.preventDefault() instead
Выдаёт ошибку event.returnValue is deprecated. Please use the standard event.preventDefault()...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru