callback: function() { //回调函数 $('.mask_calendar').fadeout(200); var startdate = $('#startdate').val(); //入住的天数 var enddate = $('#enddate').val(); //离店的天数 var numdate = $('.numdate').text(); //共多少晚 console.log(startdate); console.log(enddate); console.log(numdate); //下面做ajax请求 },
在index.html中取出就可以用了
“入住”下方的 年份 ,位置会变动,还会出现“年”字,
例如,修改成下面的参数,年份 只会显示 “20”
index : 2,//展示的月份个数 daysnumber : "20", //控制天数
请问是什么原因?
关于
currentDate.setMonth(currentDate.getMonth() + select)
引发月份不对的问题,作者可以先将当前日期设为第一天,然后再加一个月:
currentDate.setDate(1) currentDate.setMonth(currentDate.getMonth() + select)
问题找到了,的确是循环内的setMonth()方法问题;
大概是因为setMonth()的时候,可能涉及它的算法问题,有点一知半解,也希望作者来解疑.
经过个人的测试其实问题不止出现在1.29,后面的1.30,1.31,还有3.31(后面会出现两个5月份的日期)
简单理解为,当前月份的日期,如果下个月没有这一天的话,月份就会往后推一个月;也就是1月份的29号,2月份最大天数才28天,setMonth(1)的时候找不到,它就把月份setMonth(2)了,也就是到了3月份.
看了setMonth()的文档,它支持传入两个参数,
最终解决为setMonth()的时候除了把月份传进去还要把当前月份的那一天也传进去就解决问题了;
也就是 把原来的代码
currentDate.setMonth(currentDate.getMonth() + select);
改为
currentDate.setMonth(currentDate.getMonth() + select,currentDate.getDay());
就能成功渲染对月份了.不知道后续还有没有问题,希望能一起探讨
currentDate.setDate(1) currentDate.setMonth(currentDate.getMonth() + select)
还有index.html中添加了阻止默认冒泡e.stopPropagation(), e.preventDefault(), 具体如下:
$('#firstSelect').on('click', function(e) { e.stopPropagation(); e.preventDefault(); $('.mask_calendar').show(); }); $('.mask_calendar').on('click', function(e) { e.stopPropagation(); e.preventDefault(); if (e.target.className == "mask_calendar") { $('.calendar').slideUp(200); $('.mask_calendar').fadeOut(200); } })
作者,好像是刚好29号,就会连着出现两个3月份,你现在看看好像又有问题了