jQuery datepicker setdate仅在第二次单击后才起作用

时间:2017-06-13 09:37:49

标签: jquery datepicker jquery-ui-datepicker

我有一个恼人的问题。在我的情况下它没关系,但它很烦人。

我有单选按钮,用于设置完成日期的日期。这是我的代码。

$('.radios').each(function(i,e){
  $(e).change(function(){
    var id = parseInt($(e).val());
    var start = $('#start').datepicker('getDate');
    if(id == 6)
        start.setDate(start.getDate()+7); 

    $('#finish').datepicker('setDate', start);
    $('#finish').datepicker('option', 'minDate', start);
  });
});

因此,当.radios值为6时,它会将完成字段的日期设置为一周之后。但是,如果其他值,那么它应该给出与开始日期相同的日期。

例如,我在开始字段中选择13月6日,它将日期设置为6月13日,但如果我选择id = 6,则完成日期将是6月20日。然而,在我点击其他人之后它保持在第20位,在第二次选择之后它变为13。

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

minDate方法调用之前设置setDate选项值。

$( "#start, #finish" ).datepicker();
$('.radios').change(function(){
  var id = parseInt($(this).val());
  var start = $('#start').datepicker('getDate');
  if(id == 6) start.setDate(start.getDate()+7); 
  $('#finish').datepicker('option', 'minDate', start);
  $('#finish').datepicker('setDate', start);
});
<script src="//code.jquery.com/jquery-1.12.4.js"></script>
<script src="//code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<p>Date of start: <input type="text" id="start" value="06/03/2017"></p>
<p>Date of finish: <input type="text" id="finish"></p>
<input type="radio" name="diff" class="radios" value="1">1
<input type="radio" name="diff" class="radios" value="2">2
<input type="radio" name="diff" class="radios" value="3">3
<input type="radio" name="diff" class="radios" value="4">4
<input type="radio" name="diff" class="radios" value="5">5
<input type="radio" name="diff" class="radios" value="6">6