【问题标题】:jQuery datepicker setdate works only after second clickjQuery datepicker setdate 仅在第二次单击后才有效
【发布时间】:2017-06-13 09:37:49
【问题描述】:

我有一个烦人的问题。在我的情况下,这并不重要,但它很烦人。

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

$('.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 时,它会将完成日期字段设置为一周后。但如果是其他值,那么它应该给出与开始日期相同的日期。

例如,我在开始字段选择 6 月 13 日,它会将日期设置为 6 月 13 日,但如果我选择 id=6,那么结束日期将是 6 月 20 日。但是,在我点击其他人后它保持在第 20 位,在第二次选择其他人后它变为第 13 位。

我的代码做错了什么?

【问题讨论】:

  • 能否添加任何snippetfiddle 来复制问题?
  • 请为您的问题创建一个工作示例 (sn-p)

标签: jquery datepicker jquery-ui-datepicker


【解决方案1】:

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

$( "#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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    相关资源
    最近更新 更多