所以我使用datepicker插件制作可用性日历。这是我的javascript: http://pastebin.com/H7D9PcAg
当调用dpSetSelected()时,它也调用dateSelected(),它触发对我的PHP脚本的AJAX调用。我需要一种方法来只更新数据库,如果点击日期而不是预先加载。当我预先加载日期时,它们会被发送到PHP页面并随后被删除。
答案 0 :(得分:2)
为什么不将AJAX调用绑定到change函数而不是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 :(得分: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'];?>);
}
);
});
这会在触发任何绑定之前更新所选日期,防止脚本无意中更新。