2010-05-14 3 views
1

Так что я использую плагин datepicker, чтобы сделать календарь доступности. Вот мой JavaScript: http://pastebin.com/H7D9PcAgjQuery datepicker calendar - вызов базы данных обновлений функций

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

+0

И мой скрипт PHP для хранения «забронированных» дат: http://pastebin.com/ip12s2C5 . И предзагрузочные даты в скрипте: http://pastebin.com/ThjZ9Vu5 – erbaker

ответ

1

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

$(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'];?>); 
      } 
     ); 
}); 

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

+0

Хорошая информация. Другой способ одеть кошку. –

2

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

$("#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'];?>); 
    }); 
+0

Hi Bradley, Я пробовал как привязку кликов, так и изменение, но мне кажется, что я не могу пройти выбранную дату (var SelectedDate). Кроме того, если я смотрю достаточно далеко в datePicker.js, похоже, что dateSelect просто вызывает change() в любом случае – erbaker

+0

Я просто использую $ (this) .val() в функции .change(), чтобы получить значение после изменения. –

+0

Подтверждено это, а также представлено другое решение ниже. Спасибо, Брэдли! – erbaker

Смежные вопросы