Javascript日历新实例不能始终如一地工作

时间:2014-05-18 11:13:28

标签: javascript jquery jquery-ui calendar datepicker

所以我目前正在开发一个包含旅舍预订系统的小型网站。我一直在使用Javascript制作网站的可用性日历。可用性日历的目的是向成员显示该日期宿舍的可用性(将从数据库中提取并且很可能存储在JSON数组中),然后允许他们在界面上选择日期范围。在这个阶段,我有基本的工作,但是当我调用函数changeMonth()在几个月之间更改时,能够选择日期范围并自动更新相应的字段。

所以问题是,当我使用"<"更改月份时和">"按钮日历的新瞬间不会正确更新字段。

function changeMonth(dir){
    currMonth += dir;
    if(currMonth > 11)currMonth = 6;
    if(currMonth < 6)currMonth = 11;
    $('#calendar_table').remove();
    drawMonth(currMonth, 2014);
}

这是changeMonth()函数;到目前为止,我只想查看6月至11月的月份。要获取日历的新实例,我删除前一个并绘制一个新实例。 最新版本的日历可在此处jsfiddle.net

获取

我愿意接受替代方法的建议,以实现我目前正在更有效地完成同样的任务,我已经从jQuery UI中查看了Datepicker但我无法找到方法实现我的目标。

1 个答案:

答案 0 :(得分:0)

问题是,如果你重新绘制日历,你的&#39; a&#39;上的事件监听器。迷路了。

更改此内容:

$( "a" ).on( "click", function() { //...

进入:

$( "#booking_calendar" ).on( "click", "a", function() { //...

演示: http://jsfiddle.net/hZssN/76/

引用jQuery文档http://api.jquery.com/on/

  

事件处理程序仅绑定到当前选定的元素;他们   在您的代码调用.on()时页面上必须存在。   要确保元素存在且可以选择,请执行事件   绑定在文档就绪处理程序中的元素   页面上的HTML标记。如果将新HTML注入页面,   选择元素并在新HTML之后附加事件处理程序   放入页面。或者,使用委派事件来附加事件   处理程序,如下所述。