目前我有一组日期字符串,这是唯一的
eg.
2012 04 01
2012 04 10
2012 04 25
2012 06 30
2012 06 10
2012 12 01
2013 04 01
我需要做的是创建3个选择框,一个用于一年,一个用于一个月,一个用于一天
问题是我需要维持年月和日之间的关系
例如,首先用户可以查看2012 2013,然后如果2012,04,06,12显示为月,如果选择04作为月,则01,10,25显示为当天
实施是:
for (var key in data) {
year = key.substring(0,4);
if ($.inArray(year, yearArr) == '-1'){
yearArr.push(year);
$('#year').append('<option value="' + year + '">' + year + '</option>');
}
dateArr.push(key);
chtml.push("<tr><td>" + key + "</td><td>" + data[key] + "</td></tr>");
}
其中Key是每个日期字符串abd dateArr存储所有日期
$("#year").change(function(){
var month;
var monthArr = [];
var selectedValue = $(this).find(":selected").val();
if (selectedValue !== '-1') {
$('#month').prop("disabled", false);
$('#month').empty().append('<option value="-1">Please choose</option>');
for (var key in dateArr) {
if (selectedValue == key.substring(0,4)) {
month = key.substring(4,2);
if ($.inArray(month, monthArr) == '-1'){
monthArr.push(month);
$('#month').append('<option value="' + month + '">' + month + '</option>');
}
}
}
} else {
$('#month,#day').empty().append('<option value="-1">Please choose</option>');
}
});
$("#month").change(function(){
var day;
var dayArr = [];
var selectedValue = $("#year").find(":selected").val() + $(this).find(":selected").val();
if (selectedValue !== '-1') {
$('#day').prop("disabled", false);
$('#day').empty().append('<option value="-1">Please choose</option>');
for (var key in dateArr) {
if (selectedValue == key.substring(0,6)) {
day = key.substring(6,2);
if ($.inArray(day, dayArr) == '-1'){
dayArr.push(day);
$('#day').append('<option value="' + day + '">' + day + '</option>');
}
}
}
} else {
$('#month,#day').empty().append('<option value="-1">Please choose</option>');
}
});
当选择框年份或月份更改时,附加相应的值,但这不起作用,因为当用户更改月份时,他们可以返回更改年份,如何解决问题?或者建议做任何更简单的方法?感谢