【问题标题】:How to Set a Default Date in J-Query UI DatePicker如何在 J-Query UI DatePicker 中设置默认日期
【发布时间】:2013-02-27 18:29:13
【问题描述】:

我正在尝试在页面加载时在我的 2 个文本框控件中设置默认日期。我希望始终将第一个文本框(StartDate)设置为上个月的第一个文本框(例如 2013 年 1 月 1 日)。我还想将第二个文本框(EndDate)设置为上个月的月底,如 2013 年 1 月 31 日。一旦页面第一次加载,我想在文本框中加载这些默认值。提前感谢您的帮助。
这是我当前的代码:

     <link href="Styles/ui-lightness/jquery-ui-1.8.23.custom.css" rel="stylesheet" type="text/css" />
        <script src="Scripts/jquery-1.8.1.min.js" type="text/javascript"></script>
        <script src="Scripts/jquery-1.8.3.js" type="text/javascript"></script>
       <script src="FusionCharts/jquery.min.js" type="text/javascript"></script>
        <script src="Scripts/jquery-ui-1.8.23.custom.min.js" type="text/javascript"></script>

        <script type="text/javascript">
            $(document).ready(function () {
                $('.datepicker').datepicker();

            });
    </script>

<div>
<asp:TextBox ID="StartDate" runat="server" CssClass="datepicker" Width="110px"></asp:TextBox> 
</div>

<div>
<asp:TextBox ID="EndDate" runat="server" CssClass="datepicker" Width="110px"></asp:TextBox> 
</div>

【问题讨论】:

    标签: jquery asp.net jquery-ui jquery-ui-datepicker


    【解决方案1】:

    我可以这样做:

    $( ".datepicker" ).datepicker();
    var firstDay, lastDay;
    firstDay = firstDayNextMonth(new Date(2013, 0, 5)); // january = 0
    lastDay = lastDayNextMonth(firstDay);
    $("#StartDate").datepicker("setDate",  firstDay);
    $( "#EndDate" ).datepicker("setDate", lastDay );
    
    function firstDayNextMonth(date) {
        var d = date;
        if(d === undefined)
            d = new Date();
    
        d.setDate(1);
        if(d.getMonth() < 11)
            d.setMonth(d.getMonth() + 1);
        else
            d.setMonth(0);
        return d;
    }
    
    function lastDayNextMonth(myDate) {
        var endDate = new Date(myDate.getFullYear(), myDate.getMonth(), 1);
        if(endDate.getMonth() < 11)
            endDate.setMonth(endDate.getMonth() + 1);
        else
            endDate.setMonth(0);
        return new Date(endDate.getFullYear(), endDate.getMonth(), 0);
    }
    

    Link to the code in jsFiddle

    【讨论】:

    • 感谢您的回复,但文本框未预先填充,而且当我单击文本框时,我的日期选择器无法正常工作..不知道发生了什么
    • 在生成html后检查元素的ID是否真的是StartDate和EndDate。代码在这里工作:jsfiddle.net/xDQag
    【解决方案2】:
    Start <input type="text" id="StartDate"/><br>
    End <input type="text" id="EndDate"/>
    

    jQuery:

    $(function(){
      $("#StartDate").datepicker();
      $("#EndDate").datepicker();
      var startdate=new Date();
      startdate.setMonth(startdate.getMonth() - 1, 1);
      $("#StartDate").datepicker("setDate",startdate);
      var endDate=new Date(); // current date
      endDate.setDate(1); // going to 1st of the month
      endDate.setHours(-1);
      $("#EndDate").datepicker("setDate",endDate);    
    });
    

    jsfiddle

    您的代码(已编辑)

    <link href="Styles/ui-lightness/jquery-ui-1.8.23.custom.css" rel="stylesheet" type="text/css" />
    <script src="Scripts/jquery-1.8.1.min.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.8.3.js" type="text/javascript"></script>
    <script src="FusionCharts/jquery.min.js" type="text/javascript"></script>
    <script src="Scripts/jquery-ui-1.8.23.custom.min.js" type="text/javascript"></script>
    
    <script type="text/javascript">
        $(document).ready(function () {
           $("#StartDate").datepicker();
           $("#EndDate").datepicker();
           var startdate=new Date();
           startdate.setMonth(startdate.getMonth() - 1, 1);
           $("#StartDate").datepicker("setDate",startdate);
           var endDate=new Date(); // current date
           endDate.setDate(1); // going to 1st of the month
           endDate.setHours(-1);
           $("#EndDate").datepicker("setDate",endDate);
        });
    </script>
    
    <div>
    <asp:TextBox ID="StartDate" runat="server" CssClass="datepicker" Width="110px">   </asp:TextBox> 
    </div>
    
    <div>
    <asp:TextBox ID="EndDate" runat="server" CssClass="datepicker" Width="110px">  </asp:TextBox> 
    </div>
    

    注意:要运行上述脚本,请确保将ClientIDMode 设置为static

    <%@ Page Title="" Language="C#" ClientIDMode="Static" ...
    

    jsfiddle for jquery 1.8.3 and jquery ui 1.8.23

    【讨论】:

    • 谢谢,我有点不知道该放在哪里:开始
      End
      感谢 ZedBee,所以现在 StartDate 字段已填充,但 EndDate 字段为空白,我收到此错误:“Line: 1608 Error: '$.ui.ie6' is null or not an object "
    • 我在 chrome 中尝试过,但没有收到错误消息,但仍然只填充了 StartDate 字段,并且当我单击任一文本框时,日期选择器未显示。我正在使用 j-query 1.83,这可能是问题吗?感谢您的帮助
    • @moe 检查更新的答案。在第二个小提琴中,您可以看到 jQuery 版本对代码没有影响。
    • @moe 随机猜测.. 你删除了 '$('.datepicker').datepicker();'来自您的代码。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签