Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2016, 15:01   #1
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию Подвесить свой обработчик на onSelect в DataPicker

Здравствуйте.

Имеется скрипт, которому нужно узнать о том, что в DataPicker`е было выбрано значение.
Имеется DataPicker, который это значение записывает в два поля, одно - на которое он подвешен, и второе - через onSelect.
Вся эта радость использует jQuery.

Задача сформулирована в заголовке темы.

Пробовал подсовывать свои функции в onChange элементов - ноль реакции.

Пробовал подсовывать функции в .click, .change у jQuery - ноль реакции.

Пробовал использовать рекурсивный вызов через setTimeout для функции инициализации, но в этом случае при загрузке скрипт просто ждет, пока setTimeout полностью отработает, и ждать может до бесконечности, т.к. мой скрипт загружается раньше, чем создается элемент с DataPicker`ом, да и в принципе раньше, чем js с описанием функций DataPicker`а.

Из вариантов вижу перенос места инициализации моего скрипта в файле, но может быть еще что-то посоветуете?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 29.01.2016, 15:32   #2
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Если на странице https://jqueryui.com/resources/demos...r/default.html набрать в консоль:

Код:
$('#datepicker').on('change', function(e) {
    console.log($(this).val());
});
Работает же? Или я что-то не понял...
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 29.01.2016, 18:10   #3
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

чувак просто сабскрайбится на элементы, которых еще не существует
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 29.01.2016, 19:45   #4
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Цитата:
чувак просто сабскрайбится на элементы, которых еще не существует
Кратко, точно, по делу.

Вопрос в том, как дождаться их появления и подписаться на них, не тормозя загрузку скрипта.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 29.01.2016, 22:58   #5
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от Vanta11a Посмотреть сообщение
Кратко, точно, по делу.
Код:
$(function(){
/*
 а тут, тут, тут твои скрипты, скрипты, скрипты!

*/
})
либо тупо, как все делают уже 10-15 лет, разместить свой скрипт в конце страницы.

п.с. Причем самое забавное определить это просто, размести консоль-лог перед обращением к элементу, найдет ли его консоль... Это блин так просто!
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 30.01.2016, 16:40   #6
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Пробовал прописывать так:

Код:
function delayedInitForDatepicker(fCounter)
{
	if (fCounter < 50) {
		var fAttr = $('[title="myTitle"]').attr("hasDatepicker");
		if (typeof fAttr === typeof undefined || fAttr === false) {
			console.log('!! Not initialised, iteration ' + fCounter);
			setTimeout(delayedInitForDatepicker(fCounter + 1),100);
		} else {
			console.log('!! Initislized!');
			var prevHandler = $('[aria-expanded=true]').find('[title="myTitle"]').datepicker('option','onSelect');
                        // Тут вызов обработки для параметра
		}
	}		
}

$(function(){delayedInitForDatepicker(0);});
В итоге то же самое - пока fCounter не вырастет до 50 (100, 500, 100500 etc), процесс загрузки дальше не идет. А он растет, потому что поле инициализируется dataPicker`ом в следующих скриптах.

Выходом вижу только вынос всех функций в отдельный скрипт и подключение его в конце html-документа, чего очень хотелось бы избежать.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 30.01.2016, 17:24   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Не понял что вы сделать пытались, но тут
Код:
setTimeout(delayedInitForDatepicker(fCounter + 1),100);
вы не говорите таймеру "вызвать функцию с такими параметрами", а просто сами вызываете ее сразу рекурсивно.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 30.01.2016, 17:39   #8
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Блин, точно.

Спасибо.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DispatcherTimer свой обработчик события neic777 C# (си шарп) 8 06.10.2014 13:43
Присвоить свой обработчик Gregor Microsoft Office Excel 2 17.06.2012 11:08
datapicker помогитe подключить Gennadiy JavaScript, Ajax 0 17.01.2011 14:43
Кхм, как подвесить свою программу.. Человек_Борща Общие вопросы Delphi 5 23.12.2010 08:24
Свой обработчик ошибок для TImage Aslan Мультимедиа в Delphi 8 29.11.2007 11:54