原题链接: 所有的Help! How to make days enabled in UI datepicker after month change?如何在月份更改后在UI日期选择器中启用日期?
首先,尼克Craver的解决方案是美好的。但我得到了另外一个问题:
尼克Craver日期来源是来自于JS变量xml
,但我的约会源来自一个XML文件。所以我得到了相同的日期结果,但日期选择器没有按照我的方式显示。
尼克Craver代码:
var xml = '<?xml version="1.0" encoding="utf-8"?><users><user id="126"><name>john</name><watchHistory><whMonthRecords month="2010-10"><whDateList month="2010-10"><date>01</date><date>05</date><date>21</date></whDateList></whMonthRecords><whMonthRecords month="2010-11"><whDateList month="2010-11"><date>01</date><date>05</date><date>06</date><date>07</date><date>08</date><date>09</date><date>12</date><date>13</date><date>14</date><date>16</date><date>18</date><date>19</date><date>21</date><date>22</date><date>23</date><date>24</date><date>25</date><date>26</date><date>29</date></whDateList></whMonthRecords></watchHistory></user></users>';
var daysWithRecords = [];
function getDays(year,month){
initDaysArray($(xml) , year , month);
}
我希望它是:没有工作]
var daysWithRecords = [];
function getDays(year,month){
$.ajax({
type: "GET",
url: "users.xml",
dataType: "xml",
success:function(data){
initDaysArray($(data) , year , month);
}
});
功能initDaysArray()
:
function initDaysArray($xml , year , month){
var dateToFind = year+'-'+month;
daysWithRecords = $xml.find('user[id="126"] whDateList[month="'+dateToFind+'"] date').map(function() {
return dateToFind +"-"+ $(this).text();
}).get();
for(i = 0; i < daysWithRecords.length; i++){
console.log(daysWithRecords[i]);
}
}
我通过Firebug的测试。这似乎被调用的函数中的顺序:
first call: getDays() // being called from onChangeMonthYear
second call: checkAvailability() // being called from beforeShowDay
third call: ajax inside getDays() // being called inside getDays()
final call: initDaysArray() // being called inside ajax success of getDays()
如此,initDaysArray[]
总是空内checkAvailability()
[我的解决方法]
我发现这种方式来弄清楚:
使用datepicker's method "refresh"
在ajax读取XML文件后重绘日期选取器
function getDays(year,month,inst){
$.ajax({
type: "GET",
url: "users.xml",
dataType: "xml",
cache: false,
success:function(data){
console.log('reading xml file success!');
initDaysArray($(data) , year , month);
//inst.id get the div which attached with datepicker and redraw
$('#'+inst.id).datepicker('refresh');
console.log(inst.id);
}
});
它是否正确地获取XML?如果您在成功回调中添加了“警告(数据)”行,它是否显示完全相同的字符串? – 2010-11-14 02:20:27
Yeah.I用console.log()调试firebug,它显示从xml文件返回的日期。 – qinHaiXiang 2010-11-14 03:05:28