2017-06-13 105 views
0

我有一个烦人的问题。在我的情况下,这并不重要,但它很烦人。jQuery datepicker setdate仅在第二次点击后才起作用

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

$('.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。

我在代码中做错了什么?

+0

能否请您添加任何'snippet'或'fiddle'复制的问题? –

+0

请创建您的问题的工作示例(片段) –

回答

0

设置minDatesetDate方法调用之前的选项值。

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

+0

谢谢!有用!太简单。 – ayok

相关问题