Datepicker Jquery基于Ajax的日期限制

时间:2012-02-11 18:25:27

标签: javascript jquery ajax datepicker

我已经摸不着头脑了一段时间然后我发现这里的一些代码发布了很长一段时间后才做了伎俩,但是它只更新了一个月而且对象即使被ajax调用似乎也不会刷新正常。

我的JS很差,而且我只能用我拥有的编程知识来制作头脑和故事,JSON输出效果很好并且剂量抽出了我需要的值。

我有一个带有市场下拉选择框的选择框 2 Datepickers(从和到)。

MarketID正在被正确拉动,但我仍然无法确定问题是什么,仅显示2011年12月至2012年2月的日期数据,仅显示2011年12月。即使我尝试使用json feed也是数据。

如果你们能帮我一把,那就太棒了!

<script>
var allowedDates = new Object();

function queryAllowedDates (year, month, id, market) {
  $.ajax({
    type: 'GET',
    url: '/pstars/api/api_calendardates.php',
    dataType: 'json',
    success: function(response) { 
      allowedDates[id] = response.allowedDates;
    },
    data: {year:year,month:month,market:market},
    async: false
  });
}

$("#date_from").datepicker({
  dateFormat: 'yy-mm-dd', 
  changeMonth: true, 
  changeYear: true ,
  beforeShow: function (input) {
    var currentDate = $(input).datepicker('getDate');
    var id = $(input).attr('id');
    var marketid = $('#d_market').val(); 
    queryAllowedDates(currentDate.getFullYear(), currentDate.getMonth()+1,id,marketid);
  },
  onChangeMonthYear: function (year, month, inst) {
    var marketid = $('#d_market').val();
    queryAllowedDates(year, month, inst.input.attr('id'),marketid);
  },
  beforeShowDay: function (day) {
    var id = $(this).attr('id');

    var date_str = [
      day.getFullYear(),
      day.getMonth() + 1,
      day.getDate()
    ].join('-');

    if (allowedDates[id] != undefined && allowedDates[id][date_str]) {
      return [true, 'good_date', 'This date is selectable'];
    } else {
      return [false, 'bad_date', 'This date is NOT selectable'];
    } 
  }
});

$("#date_to").datepicker({
      dateFormat: 'yy-mm-dd', 
      changeMonth: true, 
      changeYear: true ,
      beforeShow: function (input) {
        var currentDate = $(input).datepicker('getDate');
        var id = $(input).attr('id');
        var marketid = $('#d_market').val(); 
        queryAllowedDates(currentDate.getFullYear(), currentDate.getMonth()+1,id,marketid);
      },
      onChangeMonthYear: function (year, month, inst) {
        var marketid = $('#d_market').val();
        queryAllowedDates(year, month, inst.input.attr('id'),marketid);
      },
      beforeShowDay: function (day) {
        var id = $(this).attr('id');

        var date_str = [
          day.getFullYear(),
          day.getMonth() + 1,
          day.getDate()
        ].join('-');

        if (allowedDates[id] != undefined && allowedDates[id][date_str]) {
          return [true, 'good_date', 'This date is selectable'];
        } else {
          return [false, 'bad_date', 'This date is NOT selectable'];
        } 
      }
    });
</script>

0 个答案:

没有答案