Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.07.2016, 20:08
Интересующийся
Отправить личное сообщение для nina_ Посмотреть профиль Найти все сообщения от nina_
 
Регистрация: 26.06.2016
Сообщений: 29

BeforeShowDate срабатывает перед $.ajax
Добрый день

С помощью следующего кода планировала выбрать дату на календаре
(datepicker UI) -> записать дату в бд -> и соответственного тут же отметить ее на календаре без перезагрузки страницы.
var disabledDays = <?php echo $json;?>;
    jQuery(document).ready(function() {
        $( "#datepicker").datepicker({
            dateFormat: 'dd/mm/yy',
            altField: '#input',
            beforeShowDay: function(date) {
                date = $.datepicker.formatDate('dd/mm/yy', date);
                for (i = 0; i < disabledDays.length; i++) {
                    if($.inArray(date,disabledDays) != -1) {
                        return [true, 'ui-state-active', 'available'];
                    }                                            
                }
                return [true];
            },
            onSelect: function(dateText, inst) {
                $.ajax({
                    type: 'POST',
                    url: "process.php",
                    dataType: "json",
                    data: {input:dateText},
                    success: function(data) {
                        console.log("Done");
                    }
                });
            }

        });
    });

В итоге дата в бд записывается, но чтобы она отметилась на календаре нужно перезагрузить страницу, вероятно, beforeShowDay срабатывает
раньше $.ajax?

Попробовала убрать асинхронность и обновить календарь после выполнения запроса, но это наверное не в ту степь?
Подскажите как получить отмеченные даты после добавления в бд
без перезагрузки страницы?
var disabledDays = <?php echo $json;?>;
    jQuery(document).ready(function() {
        $( "#datepicker").datepicker({
            dateFormat: 'dd/mm/yy',
            altField: '#input',
            onSelect: function(dateText, inst) {
                $.ajax({
                    async: false,
                    type: 'POST',
                    url: "process.php",
                    dataType: "json",
                    data: {input:dateText},
                    success: function(data) {
                        $('#datepicker').datepicker('refresh');
                    }
                });
            },
            beforeShowDay: function(date) {  
                date = $.datepicker.formatDate('dd/mm/yy', date);
                for (i = 0; i < disabledDays.length; i++) { 
                    if($.inArray(date,disabledDays) != -1) {                     
                        return [true, 'ui-state-active', 'available']; 
                                                                       
                    }                                              
                }
                return [true];
            }
        });
    });
Ответить с цитированием
  #2 (permalink)  
Старый 01.07.2016, 20:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

...
disabledDays.push(dateText) ;
$('#datepicker').datepicker('refresh');
...
Ответить с цитированием
  #3 (permalink)  
Старый 01.07.2016, 20:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от nina_
отметить ее на календаре без перезагрузки страницы.
Как выбрать несколько дат в календаре
Ответить с цитированием
  #4 (permalink)  
Старый 01.07.2016, 21:00
Интересующийся
Отправить личное сообщение для nina_ Посмотреть профиль Найти все сообщения от nina_
 
Регистрация: 26.06.2016
Сообщений: 29

Вот это да! Волшебство! Работает, моему счастью нет предела!
Как вы так быстро ориентируетесь что и где не работает и как поправить?
Я даже в сторону .push(); не подумала бы, что так можно,
искала ответ в документации к виджету?
Спасибо вам огромное!

P.S. За ссылку отдельное спасибо. Она то, что нужно. Угадали)
Ответить с цитированием
  #5 (permalink)  
Старый 01.07.2016, 21:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

nina_,
на всякий случай:
в коде по ссылке, тогда я не знал о встроенном методе форматирования даты и парсил дату, у вас это правильнее
date = $.datepicker.formatDate('dd/mm/yy', date);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переделать функцию adspro AJAX и COMET 5 09.03.2015 04:32
Ошибка вызова $.ajax Liv AJAX и COMET 7 17.01.2013 17:36
AJAX запрос в Internet Explorer срабатывает через раз nikolayseo jQuery 5 13.11.2012 00:13
Нажатие по дате в календаре срабатывает только со второго клика afr0 Events/DOM/Window 4 31.10.2012 13:39
Проблема с $.ajax Iesua jQuery 5 14.07.2012 17:17