我有一个日期输入表格,它使用三个选项(日/月/年)
以下脚本允许使用datepicker设置选择。此外,一旦完成此操作,就可以更改选择,并将更改反映在datepicker中。
但是,如果您先设置选择,然后单击打开日期选择器,它不会选择对选择的更改并在datepicker中突出显示正确的日期。它只适用于首先使用datepicker!
这是JQuery:
$(document).ready(function() {
$('.installDatePicker').append('<img src="assets/images/ico-calendar.png" width="20" height="22" alt="Pick date" /><div class="cal"/>')
$('.installDatePicker').each(function(i){
$(this).find('.cal').datepicker({
beforeShow: readSelected,
onSelect: updateSelected,
minDate: new Date(2010, 1 - 1, 1),
maxDate: new Date(2012, 12 - 1, 31),
}).hide();
})
$(this).find('img').click(function(){
$(this).parent().find('.cal').datepicker({
beforeShow: readSelected
}).show()
})
});
// Get values of select boxes and send to datepicker
function readSelected() {
return {
setDate: $(this).parent().val(
$(this).find('select:eq(1)').val() + '/' +
$(this).find('select:eq(0)').val() + '/' +
$(this).find('select:eq(2)').val())
}
}
// Set values of select boxes from datepicker
function updateSelected(date) {
$(this).parent().find('select:eq(1)').val(date.substring(0, 2));
$(this).parent().find('select:eq(0)').val(date.substring(3, 5));
$(this).parent().find('select:eq(2)').val(date.substring(6, 10));
$(this).hide();
}
这是单个日期控件的结构
<fieldset id="firstChoiceDate" class="installDatePicker">
<select>
<option value="01">1</option>
<option value="02">2</option>
<option value="03">3</option>
<option value="04">4</option>
<option value="05">5</option>
<option value="06">6</option>
<option value="07">7</option>
<option value="08">8</option>
<option value="09">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<select>
<option value="01">Jan</option>
<option value="02">Feb</option>
<option value="03">Mar</option>
<option value="04">Apr</option>
<option value="05">May</option>
<option value="06">Jun</option>
<option value="07">Jul</option>
<option value="08">Aug</option>
<option value="09">Sep</option>
<option value="10">Oct</option>
<option value="11">Nov</option>
<option value="12">Dec</option>
</select>
<select>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
</select>
</fieldset>
答案 0 :(得分:0)
我很好奇你使用$(this):
$(this).find('img').click(function(){
setDate: $(this).parent().val(
$(this).parent().find('select.....
您期望this
在这些情况下到底是什么意思?
第一个是在准备好之内,所以我不确定它会是什么。
第二个和第三个是非匿名函数,所以我不确定这是否会引用你想要的对象。
虽然可能是错的......
答案 1 :(得分:0)
我实际上是OP,但当我发布时,某种程度上没有登录:)
要回答James问题,有问题的代码实际上是在“每个”循环中开始的,我设法粘贴了一个'实验'来尝试修复它 - 我用它替换了它
$('.installDatePicker img').click(function(){
$(this).parent().find('.cal').datepicker({
beforeShow: readSelected
}).show()
})
我在原始问题中所说的行为相同,所以遗憾的是我的问题仍然存在!