【问题标题】:Add days to datetimepicker upon radio button changed在单选按钮更改后向 datetimepicker 添加天数
【发布时间】:2017-11-23 08:21:06
【问题描述】:

我有两个日期输入框 Date FromDate To 和两个单选按钮。

第一个单选按钮将添加 5 天,而第二个单选按钮将添加 10 天到 Date To

如何在单选按钮更改时触发Date To

$('.datetimepicker').datetimepicker({
  format : "YYYY-MM-DD"
});

function fn_toggleExpDateOut(e){
  var days = 0;
  var sel = $('input[name=rb]:checked').val() || 0;
  var dateto = e.date.add(+sel || 0, 'days');
  
  $('#dateto').val(dateto.format('YYYY-MM-DD'));
}

$('#datefrom').datetimepicker().on('dp.change', function(e) {
  fn_toggleExpDateOut(e);
});

$('input[type=radio][name=rb]').on('change', function() {
  // How to update the Date To?
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/css/bootstrap-datetimepicker.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/js/bootstrap-datetimepicker.min.js"></script>

<div class="col-lg-6">
<input id="datefrom" name="datefrom" type="text" class="datetimepicker form-control" />
</div>
<div class="col-lg-6">
<input id="dateto" name="dateto" type="text" class="datetimepicker form-control" />
</div>

<div class="col-lg-6">
  <input type="radio" id="rb_five" name="rb" value="5" /> <label for="rb5">Top <small>Add 5 days</small></label>
</div>
<div class="col-lg-6">
  <input type="radio" id="rb_ten" name="rb" value="10" /> <label for="rb10">Standard <small>Add 10 days</small></label>
</div>

【问题讨论】:

  • How to trigger 你的意思是要更改dateTo 输入的值吗?
  • 您是否尝试过“点击”而不是“更改”?就像 $('input[type=radio][name=rb]').on('click', function() { // 如何更新日期到? })
  • Date To 依赖于下面的单选按钮,因此如果我选择任何单选按钮,日期应自动为单选按钮值添加 5 天或 10 天。我在网上找到的所有参考资料都使用 datetimepicker e 函数。

标签: jquery html bootstrap-datetimepicker eonasdan-datetimepicker


【解决方案1】:

您只需要运行在fromDate 更改上运行的相同功能。只需传递当前的fromDate

$('.datetimepicker').datetimepicker({
  format : "YYYY-MM-DD"
});

function fn_toggleExpDateOut(date) {
  var days = 0;
  var sel = $('input[name=rb]:checked').val() || 0;
  console.log('sel', sel)
  var dateto = date.add(+sel || 0, 'days');
  
  $('#dateto').val(dateto.format('YYYY-MM-DD'));
}

$('#datefrom').on('dp.change', function(e) {
  fn_toggleExpDateOut(e.date);
});

$('input[type=radio][name=rb]').on('change', function() {
  var fromDate = $('#datefrom').data('DateTimePicker').date();
  if (fromDate) {
    fn_toggleExpDateOut(fromDate);
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/css/bootstrap-datetimepicker.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/js/bootstrap-datetimepicker.min.js"></script>

<div class="col-lg-6">
<input id="datefrom" name="datefrom" type="text" class="datetimepicker form-control" />
</div>
<div class="col-lg-6">
<input id="dateto" name="dateto" type="text" class="datetimepicker form-control" />
</div>

<div class="col-lg-6">
  <input type="radio" id="rb_five" name="rb" value="5" /> <label for="rb5">Top <small>Add 5 days</small></label>
</div>
<div class="col-lg-6">
  <input type="radio" id="rb_ten" name="rb" value="10" /> <label for="rb10">Standard <small>Add 10 days</small></label>
</div>

【讨论】:

    【解决方案2】:

    您可以在radio 按钮change 事件处理程序上调用相同的fn_toggleExpDateOut,并为days 添加一个额外参数。

    var days = 0;
    
    $('.datetimepicker').datetimepicker({
      format: "YYYY-MM-DD"
    });
    
    function fn_toggleExpDateOut(days) {
      var dateto = $("#datefrom").data('DateTimePicker').date().add(days, 'days');
      $('#dateto').val(dateto.format('YYYY-MM-DD'));
    }
    
    $('#datefrom').datetimepicker().on('dp.change', function(e) {
      fn_toggleExpDateOut(days);
    });
    
    $('input[type=radio][name=rb]').on('change', function(e) {
      days = parseInt($(this).val());
      fn_toggleExpDateOut(days);
    });
    

    注意:

    • 我稍微编辑了你的 fn_toggleExpDateOut() 函数,所以它 仅接受 days 作为参数,并编辑 dateto datetimepicker 值 根据传递的参数。

    • 我还将days 变量设为全局变量,因此可以访问/更改它 在change 事件处理程序和fn_toggleExpDateOut 中, 并添加了一个全局 date 变量来保存 datefrom 日期值。

    演示:

    var days = 0;
    
    $('.datetimepicker').datetimepicker({
      format: "YYYY-MM-DD"
    });
    
    function fn_toggleExpDateOut(days) {
      var dateto = $("#datefrom").data('DateTimePicker').date().add(days, 'days');
      $('#dateto').val(dateto.format('YYYY-MM-DD'));
    }
    
    $('#datefrom').datetimepicker().on('dp.change', function(e) {
      fn_toggleExpDateOut(days);
    });
    
    $('input[type=radio][name=rb]').on('change', function(e) {
      days = parseInt($(this).val());
      fn_toggleExpDateOut(days);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.min.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/css/bootstrap-datetimepicker.min.css" rel="stylesheet" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/js/bootstrap-datetimepicker.min.js"></script>
    
    <div class="col-lg-6">
      <input id="datefrom" name="datefrom" type="text" class="datetimepicker form-control" />
    </div>
    <div class="col-lg-6">
      <input id="dateto" name="dateto" type="text" class="datetimepicker form-control" />
    </div>
    
    <div class="col-lg-6">
      <input type="radio" id="rb_five" name="rb" value="5" /> <label for="rb5">Top <small>Add 5 days</small></label>
    </div>
    <div class="col-lg-6">
      <input type="radio" id="rb_ten" name="rb" value="10" /> <label for="rb10">Standard <small>Add 10 days</small></label>
    </div>

    【讨论】:

      猜你喜欢
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      • 2019-07-10
      • 2011-03-23
      • 2016-08-04
      • 1970-01-01
      相关资源
      最近更新 更多