如何在更改另一个 TextBox 值时设置 TextBox 值

How to set a TextBox value when another TextBox value is changed

我有两个带有这样的日期选择器的文本框。

<script type="text/javascript">
    $(function () {
        $('#value_date').datetimepicker({ format: 'MM/DD/YYYY' });
        $('#run_date').datetimepicker({ format: 'MM/DD/YYYY hh:mm a' });
    });

</script>

<div class='input-group date' id='value_date'>
    <input type="text" id="txtValueDate" class="form-control" runat="server" placeholder="Value Date"/>
    <span class="input-group-addon">
        <span class="glyphicon glyphicon-calendar"></span>
    </span>
 </div>

<div class='input-group date' id='run_date'>
    <input type="text" id="txtRunDate" class="form-control" runat="server" placeholder="Run Date" />
    <span class="input-group-addon">
        <span class="glyphicon glyphicon-calendar"></span>
    </span>
 </div>

然后,当 value_date 的值发生变化时(例如 03/31/2016),run_date 会自动设置为 value_date 昨天(03/30/ 2016) 作为默认 run_date,但仍然可以通过 datetimepicker 进行更改。 我该怎么做?

我认为当 value_date 的值发生变化时,您可以使用 onselect 事件,例如:

$(".txtValueDate").datetimepicker({
onSelect: function(dateText) {
  var date = new Date();
  date.setDate(date.getDate()-1);
  var yesterday =  date.getDate() + '/' + (date.getMonth()+1) + '/' + date.getFullYear();
  $('#txtRunDate').val(yesterday);
}});

要获取以前的日期,一种方法可能如下所示(冗长的代码,因为我使用了 javascript Date 的函数):

$("#txtValueDate").change(function() {
   var valueDate = new Date($(this).val());
   var runDate = new Date();
   runDate.setDate(valueDate.getDate() - 1);//previous date
   $("#run_date").val(
                  (runDate .getMonth() + 1) 
                  + '/' + runDate.getDate()
                  + '/' + runDate.getFullYear()  
                  );
});

你应该使用输入框的change事件。您还需要更正您使用的 id 选择器。最后,我建议你包括 momentjs 库(link)来计算和格式化前一天的显示:

$('#txtValueDate').change(function(){   
  $('#txtRunDate').val(moment($(this).val()).subtract(1, 'days').format('MM/DD/YYYY'));
    });