Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему функция то срабатывает то нет (https://javascript.ru/forum/misc/46774-pochemu-funkciya-srabatyvaet-net.html)

tsigel 16.09.2014 12:03

Воу!
http://stackoverflow.com/questions/3...disabled-input
По ходу задизейбленный элемент не пускает всплытие событий!

borus 16.09.2014 13:07

Цитата:

Сообщение от tsigel (Сообщение 330812)
Воу!
http://stackoverflow.com/questions/3...disabled-input
По ходу задизейбленный элемент не пускает всплытие событий!

я к span-у прицепляю обработчик, который уже содержит в себе задизэйбленный input. По идее это похоже на совет, который дается по Вашей ссылке, состоящий в том, чтобы прицеплять обработчик к элементу, который будет поверх input. Есть какая-то принципиальная разница в том, как я это делаю?

tsigel 16.09.2014 13:11

Цитата:

я к span-у прицепляю обработчик, который уже содержит в себе задизэйбленный input. По идее это похоже на совет, который дается по Вашей ссылке состоящий в том, чтобы прицеплять обработчик к элементу который будет поверх input. Есть какая-то принципиальная разница в том как я это делаю?
Цитата:

$("div > div").click(function (evt) {
$(this).hide().prev("input[disabled]").prop("disabled", false).focus();
});​
Да, там говорится о том что событие придется вешать не на родительский элемент, а на "брата" лежащего на тех-же координатах. Потому что задизейбленный инпут не пускает всплытие (делегирование) событий и на родителе оно не происходит.

Внимательно посмотрите пример, там див который в верстке лежит рядом с инпутом а по стилям - точно сверху.

borus 16.09.2014 13:26

Цитата:

Сообщение от tsigel (Сообщение 330824)
Да, там говорится о том что событие придется вешать не на родительский элемент, а на "брата" лежащего на тех-же координатах. Потому что задизейбленный инпут не пускает всплытие (делегирование) событий и на родителе оно не происходит.

Внимательно посмотрите пример, там див который в верстке лежит рядом с инпутом а по стилям - точно сверху.

Спасибо.
По-моему, там говорится о том, что можно вешать на контейнер для большинства браузеров, за исключением FF:
" Most browsers will propagate an event originating from the disabled element up the DOM tree, so event handlers could be placed on container elements"
но в Хроме как выходит не работает
Попробую как в примере.
Странно. Такое ощущение, что Хром или все браузеры разом изменили подход к отключенным инпутам. Ведь раньше работало. Либо действительно есть скрипт, который пересоздает кнопку... Истина, приди к нам :)


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