2016-12-12 18 views
1

我在Air Datepicker中选择一个日期,并试图将今天的日期与选定的日期进行比较,以确定天数差异。因此,例如,如果今天是2016年11月12日,我选择12/20/2016,我想要得到差异,这是9.差异不是Moment.js中的函数

我一直遇到以下错误:“end.diff is不是功能“。

我已经剥离了下面的代码到要领:

HTML

<form> 
    <input id="datereq" name="datereq" type="text" class="dateReq" value="" /> 
</form> 
<div id="selected"></div> 

JQUERY

var date = new Date(), 
    disabledDays = [0, 6]; 

$('.dateReq').datepicker({ 
    dateFormat: 'mm/dd/yyyy', 
    minDate: new Date(), 
    language: 'en', 
    autoClose: true, 
    onRenderCell: function(date, cellType) { 
     if (cellType == 'day') { 
      var day = date.getDay(), 
       isDisabled = disabledDays.indexOf(day) != -1; 
      return { 
       disabled: isDisabled 
      }; 
     } 
    }, 

    // Display Appropriate Order Type Options 
    onSelect: function onSelect(fd, date) { 
     var now = moment(new Date()).format('MM/DD/YYYY'), 
      end = fd, 
      days = end.diff(now, 'days'); 
     $('#selected').html('now:' + now + 'end:' + end + 'diff:' + days); 
     //console.log('end:' + end); 
     //console.log('diff:' + days); 
    } 
}); 

小提琴

https://jsfiddle.net/qn530dpq/

回答

5

的ONSELECT函数的第一个参数是日期的文本 - 没有一刻对象。 尝试在代表选定日期的时刻对象上调用diff函数,它将起作用。你也必须指定变量“end”,这可能是你的“fd”。 检查出来:https://jsfiddle.net/t9suf65p/

// Initialize Datepicker 
    var date = new Date(), 
    disabledDays = [0, 6]; 

    $('.dateReq').datepicker({ 
     dateFormat: 'mm/dd/yyyy', 
       minDate: new Date(), 
     language: 'en', 
     autoClose: true, 
     onRenderCell: function (date, cellType) { 
      if (cellType == 'day') { 
       var day = date.getDay(), 
        isDisabled = disabledDays.indexOf(day) != -1; 
       return { 
        disabled: isDisabled 
       }; 
      } 
     }, 

     // Display Appropriate Order Type Options 
     onSelect: function onSelect(fd, date) { 
      var selectedDate = moment(fd, 'MM/DD/YYYY'); 
      var now = moment(new Date()); 
      var days = selectedDate.diff(now, 'days'); 
       $('#selected').html('now: ' + now.format('MM/DD/YYYY') + 'end: ' + selectedDate.format('MM/DD/YYYY') + ' diff: ' + days); 
       //console.log('end:' + end); 
       //console.log('diff:' + days); 
     } 
    }); 
+0

这是最完整的/彻底解决我的问题。谢谢! – dentalhero

3

diff函数仅在矩对象上可用。 试试这个:

var now = moment(new Date()), 
end = moment(fd), 
days = end.diff(now, 'days'); 
0

您可以使用这样的事情:

$('#datepickerId').datepicker({ 
    onSelect: function() { 
     var date = $(this).datepicker('getDate'); 
     var today = new Date(); 
     var dayDiff = Math.ceil((today - date)/(1000 * 60 * 60 * 24)); 
    } 
});