【问题标题】:set datetimepicker's minimum date to another datetimepicker's selected date将 datetimepicker 的最小日期设置为另一个 datetimepicker 的选定日期
【发布时间】:2017-12-24 02:43:38
【问题描述】:

我有两个文本框:txtETCdatefrom 和 txtETCdateto 分别具有 datetimepicker1 和 datetimepicker2 类:

<asp:TextBox ID="txtETCdatefrom" runat="server" CssClass="form-control datetimepicker1 col-md-6"></asp:TextBox>
<asp:TextBox ID="txtETCdateto" runat="server" CssClass="col-md-6 datetimepicker2 form-control"></asp:TextBox>

我在两个类上都使用仅日期格式的 datetimepicker(如果我将 minDate 设置为任何特定的日期或时刻(),它工作正常)。 我想将 datetimepicker2 的最小日期设置为 datetimepicker1 的选定值或 txtETCdatefrom 的值。 我的日期时间选择器代码是:

$('.datetimepicker1').datetimepicker({
                    format: 'DD/MM/YYYY',
                    minDate: moment(),
                });            
$('.datetimepicker2').datetimepicker({
                    format: 'DD/MM/YYYY',
                    //minDate: moment(),                   
                });

我对此进行了搜索并找到了 datepicker 的答案(使用 onSelect() 函数):

$('.datetimepicker1').datetimepicker({
             format: 'DD/MM/YYYY',
             minDate: moment(),
             onSelect: function (date) {
             var date1 = $('.datetimepicker1').datetimepicker('getDate');
             var date = new Date(Date.parse(date1));
             date.setDate(date.getDate() + 1);
             var newDate = date.toDateString();
             newDate = new Date(Date.parse(newDate));
             $('.datetimepicker2').datetimepicker("option", "minDate", newDate);
             }
       });
$('.datetimepicker2').datetimepicker({
                    format: 'DD/MM/YYYY',
                    //minDate: moment(),
                });

但它不适用于 datetimepicker。 我还尝试了 beforeShow() 函数,例如:

$('.datetimepicker1').datetimepicker({
                    format: 'DD/MM/YYYY',
                    minDate: moment(),
                });
$('.datetimepicker2').datetimepicker({
                    format: 'DD/MM/YYYY',
                    //minDate: moment(),
                    beforeShow: function () {
                        $(".datetimepicker2").datetimepicker("option", {
                        minDate: $(".datetimepicker1").datetimepicker('getDate')
                        });
                    }
                });

但都是徒劳的。还按照建议尝试了 onSelectDate() 和 onShow() 函数 Set max and min datetime in jquery datetimepicker 不知道我做错了什么。 在代码中包含这些函数后,日期时间选择器不会出现。 所有帮助将不胜感激。谢谢。

【问题讨论】:

  • 你确定你在使用jQuery UI Datepicker,因为我认为这是使用 $().datepicker() 而不是 $().datetimepicker() 初始化的。你能检查一下吗?
  • 以下是他们推荐使用 min and max 的方法。尝试使用 javascript 日期对象而不是 moment() 或日期字符串。 Momentjs 提供了将 moment() 转换为 javascript 日期对象的函数。
  • @Yatin 我使用的是引导程序 datetimepicker 而不是 datepicker,我没有找到 datetimepicker 的解决方案。谢谢

标签: javascript asp.net twitter-bootstrap visual-studio-2015 bootstrap-datetimepicker


【解决方案1】:

我关注datepicker official website 中的文档。

$(function () {
       
       $('#datetimepicker1').datetimepicker({
                    format: 'DD/MM/YYYY',
                    minDate: moment(),
                });            
      
      
      $('#datetimepicker2').datetimepicker({
                    format: 'DD/MM/YYYY',
                });
      
      $("#datetimepicker1").on("dp.change", function (e) {
            var oldDate = new Date(e.date);
            var newDate = new Date();
            newDate.setDate(oldDate.getDate() + 1);

            $('#datetimepicker2').data("DateTimePicker").minDate(newDate);          
        });
      
    });
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
    <link href="https://cdn.bootcss.com/bootstrap-datepicker/1.7.1/css/bootstrap-datepicker.min.css" rel="stylesheet"/>
    <script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.js"></script>

    <div class="container">
        <div class="row">
            <div class='col-sm-6'>
                <div class="form-group">
                    <div class='input-group date' id='datetimepicker1'>
                        <input type='text' class="form-control" />
                        <span class="input-group-addon">
                            <span class="glyphicon glyphicon-calendar"></span>
                        </span>
                    </div>
                </div>
            </div>
        </div>
        
        <div class="row">
            <div class='col-sm-6'>
                <div class="form-group">
                    <div class='input-group date' id='datetimepicker2'>
                        <input type='text' class="form-control" />
                        <span class="input-group-addon">
                            <span class="glyphicon glyphicon-calendar"></span>
                        </span>
                    </div>
                </div>
            </div>
        </div>
    </div>


    <script src="https://cdn.bootcss.com/moment.js/2.18.1/moment.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/js/bootstrap-datetimepicker.min.js"></script>

【讨论】:

  • 哇!!有效。非常感谢。想知道我是怎么没找到的。无论如何,你真的拯救了我的一天..!!
  • 现在我遇到了另一个问题,它只适用于我的前两个文本框,但不适用于其他文本框。我该如何解决它
  • @Preet “其他人”是什么意思?
  • 这意味着我页面上的其他文本框。我使用了不同的 id 而不是类,它的工作原理感谢@Nico
  • @Preet 我发现您可能需要在 datetimepicker2 中添加 1 天,所以我为您更新了答案。祝你有美好的一天!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
相关资源
最近更新 更多