Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 29.01.2016, 16: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, 16: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());
});
Работает же? Или я что-то не понял...
^-.-^ Клавогонки.ру - набирай скорость!
Fenex вне форума   Ответить с цитированием
Старый 29.01.2016, 19:10   #3
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,820
По умолчанию

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

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

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

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

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

п.с. Причем самое забавное определить это просто, размести консоль-лог перед обращением к элементу, найдет ли его консоль... Это блин так просто!
Работаю. В этот раз за деньги.
Жду ваши искренние спасибы на яндекс-кошелек: 410011068154587
Naive вне форума   Ответить с цитированием
Старый 30.01.2016, 17: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, 18:24   #7
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,457
По умолчанию

Не понял что вы сделать пытались, но тут
Код:
setTimeout(delayedInitForDatepicker(fCounter + 1),100);
вы не говорите таймеру "вызвать функцию с такими параметрами", а просто сами вызываете ее сразу рекурсивно.
Alex11223 на форуме   Ответить с цитированием
Старый 30.01.2016, 18:39   #8
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Блин, точно.

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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 15:43
Кхм, как подвесить свою программу.. Человек_Борща Общие вопросы Delphi 5 23.12.2010 09:24
Свой обработчик ошибок для TImage Aslan Мультимедиа в Delphi 8 29.11.2007 12:54


20:08.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.