jQuery datepicker calendar - вызов функции обновления базы данных - PullRequest
1 голос
/ 14 мая 2010

Поэтому я использую плагин datepicker для создания календаря доступности. Вот мой JavaScript: http://pastebin.com/H7D9PcAg

Когда вызывается dpSetSelected (), он также вызывает dateSelected (), которая запускает вызов AJAX для моего PHP-скрипта. Мне нужен способ обновить базу данных только в том случае, если дата нажата и предварительно не загружена. Когда я предварительно загружаю даты, они отправляются на страницу PHP и впоследствии удаляются.

Ответы [ 2 ]

2 голосов
/ 14 мая 2010

Почему бы вам не связать вызов AJAX с функцией изменения вместо dateSelected? Таким образом, когда дата предварительно загружена, ничего не произойдет, но если вы измените дату, нажав на нее, она сработает. Похоже, это работает нормально на выбранных мной средствах выбора даты:

$("#startDate, #endDate")
    .datepicker({
        showOn: 'button',
        buttonImage: '/images/icon_calendar.png',
        duration: 0 })
    .change(function() {
        //do stuff
    });

Итак, с вашим кодом измените следующее:

.bind(  'dateSelected', function(e, selectedDate, $td, state) {
    $("#info").load("test1.php?date="+encodeURIComponent(selectedDate)+"&land-id="+<? =$_GET['eid'];?>);
  });

до:

.change(function() {
    $("#info").load("test1.php?date="+$(this).val()+"&land-id="+<?=$_GET['eid'];?>);
  });
1 голос
/ 15 мая 2010

Я поговорил с автором сценария и воспользовался его советом:

$(function()
    {
    var passedDates = $('#passed-dates').val().split(','); // works okay


    var dp = $('.date-pick')
        .datePicker(
            {
                createButton:false,
                closeOnSelect:false,
                selectMultiple:true,
                inline:true
            }
        );

        for (var i = 0; i < passedDates.length - 1; i++) 
        {
            dp.dpSetSelected(passedDates[i]);
        }

        dp.bind(
            'click',
            function()
            {
                $(this).dpDisplay();
                this.blur();
                return false;
            }
        )
        .bind(
            'dateSelected',
            function(e, selectedDate, $td, state)
            {
                $("#info").load("test1.php?date="+encodeURIComponent(selectedDate)+"&land-id="+<?=$_GET['eid'];?>);
            }
        );
});

Это обновит выбранные даты до того, как сработают все привязки, и скрипт не будет непреднамеренно обновлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...