【问题标题】:Set second datefield value to after 7 days from first selected datefield value将第二个日期字段值设置为从第一个选定日期字段值开始 7 天后
【发布时间】:2018-08-31 04:39:41
【问题描述】:

我需要将第二个日期字段值设置为从第一个日期字段值开始 7 天后。这应该在我选择第一个日期字段时发生。这是我的代码。

<script type="text/javascript">
     function pageLoad() {

         $("[id$=txtToDate]").datepicker({
             'format': 'yyyy-mm-dd', autoclose: true, todayHighlight: true
         }).attr('readonly', 'readonly');
         $("[id$=txtFromDate]").datepicker({
             'format': 'yyyy-mm-dd', autoclose: true, todayHighlight: true
         }).attr('readonly', 'readonly');
     };

     </script>
    ////
     <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                            <div class="row">
                              <div class="col-md-10">
                                <div class="form-group">
                                    <label class="col-sm-2 control-label">From Date :</label>
                                    <div class="col-sm-4">
                                        <asp:TextBox ID="txtFromDate" runat="server" CssClass="form-control" AutoPostBack="True"></asp:TextBox>
                                    </div>
                                    <label class="col-sm-2 control-label">To Date :</label>
                                    <div class="col-sm-4">
                                        <asp:TextBox ID="txtToDate" runat="server" CssClass="form-control" AutoPostBack="True"></asp:TextBox>
                                    </div>
                                </div> 
                             </div>
                          </div>


    </asp:UpdatePanel>

【问题讨论】:

  • 您想将第二个日期选择器的开始日期设置为比第一个日期选择器提前 7 天吗?如果这是您想要的,那么在更改第一个日期选择器时应该应用这样的声音:$('[id$=txtToDate]').datepicker('setStartDate', e.date.getDate() + 7);
  • 是的,这就是我想要的。我对这些东西不熟悉,你能告诉我什么是我应该称之为的事件吗?
  • 你的 pageLoad() 没有运行?
  • 不,它正在运行。我应该将此 java 脚本代码添加到页面加载吗?

标签: jquery asp.net webforms


【解决方案1】:

您可以使用$("[id$=txtFromDate]").datepicker("getDate") 和来自第一个日期选择器的change 事件来捕获值,并使用更新的日期值设置第二个日期选择器的minDate 选项。以下是完成任务的示例:

$("[id$=txtFromDate]").datepicker({
   'format': 'yyyy-mm-dd', 
   autoclose: true, 
   todayHighlight: true,
}).attr('readonly', 'readonly').change(function() {
    var date2 = new Date($("[id$=txtFromDate]").datepicker("getDate"));
    date2.setDate(date2.getDate() + 7); // set 7 days ahead
    $('[id$=txtToDate]').datepicker("setDate", date2); // set date value of second datepicker
    $('[id$=txtToDate]').datepicker("option", "minDate", date2); // set minimum date of second datepicker
});

注意:您可以对txtToDate 执行相反的操作,将date2.setDate(date2.getDate() - 7);txtFromDate 作为目标,以便两个日期选择器都可以自行调整。

附加说明:如果您在使用日期选择器时遇到问题并且没有使用ClientIDMode="Static",请将$("[id$=datepickerid]") 替换为$('&lt;%= datepickerid.ClientID %&gt;'),如下例所示:

$("<%= txtFromDate.ClientID %>").datepicker({
   'format': 'yyyy-mm-dd', 
   autoclose: true, 
   todayHighlight: true,
}).attr('readonly', 'readonly').change(function() {
    var date2 = new Date($("<%= txtFromDate.ClientID %>").datepicker("getDate"));
    date2.setDate(date2.getDate() + 7); // set 7 days ahead
    $('<%= txtToDate.ClientID %>').datepicker("setDate", date2); // set date value of second datepicker
    $('<%= txtToDate.ClientID %>').datepicker("option", "minDate", date2); // set minimum date of second datepicker
});

工作示例:JSFiddle

【讨论】:

  • 您是否在浏览器控制台中遇到错误,或者日期选择器无法正常运行?如果 ClientIDMode 未设置为 Static,您可能需要像 &lt;%= txtToDate.ClientID %&gt; 这样的选择器。
猜你喜欢
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-29
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
相关资源
最近更新 更多