如何使用今天的日期预先填充 jQuery Datepicker 文本框?

Posted

技术标签:

【中文标题】如何使用今天的日期预先填充 jQuery Datepicker 文本框?【英文标题】:How do I pre-populate a jQuery Datepicker textbox with today's date? 【发布时间】:2010-09-19 00:18:48 【问题描述】:

我有一个非常简单的 jQuery Datepicker 日历:

$(document).ready(function()
    $("#date_pretty").datepicker( 
    );
);

当然还有 html...

<input type="text" size="10" value="" id="date_pretty"/>

今天的日期在用户调出日历时很好地突出显示,但是我如何让 jQuery 在页面加载时使用今天的日期预先填充文本框本身,而不需要用户做任何事情? 99% 的情况下,今天的默认日期将是他们想要的。

【问题讨论】:

最受欢迎的答案比公认的答案更好。最好更改接受的答案。 我的相关问题***.com/questions/25602649/… @ahmadalishafiee(以及其他所有人)。当前接受的解决方案已于 2015-05-07 接受。 【参考方案1】:

更新:有报告称这不再适用于 Chrome。

这很简洁并且可以完成工作(已过时):

$(".date-pick").datepicker('setDate', new Date());

这不太简洁,使用chaining 允许它在 chrome (2019-06-04) 中工作:

$(".date-pick").datepicker().datepicker('setDate', new Date());

【讨论】:

这是真正为我工作的解决方案,而不是公认的解决方案。谢谢 这不行,首先你应该调用 $(".date-pick").datepicker();然后 $(".date-pick").datepicker('setDate', new Date()); 在最近的浏览器更新后不再在 Chrome 中工作 @QuinnDaley 谢谢 - 我在回答中添加了警告。 有效。我正在设置$(".date-pick").datepicker().datepicker('setDate', new Date()); tho【参考方案2】:

您必须首先调用 datepicker() > 然后使用 'setDate' 来获取当前日期。

$(".date-pick").datepicker();
$(".date-pick").datepicker("setDate", new Date());

或在您的日期选择器初始化后链接您的 setDate 方法调用,如对此答案的评论中所述

$('.date-pick').datepicker( /* optional option parameters... */ )
               .datepicker("setDate", new Date());

它将仅与

一起使用
$(".date-pick").datepicker("setDate", new Date());

注意描述了可接受的 setDate 参数here

【讨论】:

使用 jQueryUI 1.8 我发现这个解决方案是完成此任务的唯一(理智)方法。 $(".selector").datepicker().datepicker("setDate", new Date());可以工作,并且不会让 jQuery 搜索 DOM 两次。 很好,接受的答案只说 $(".date-pick").datepicker("setDate", new Date());如果没有第一次调用 $(".date-pick").datepicker(); 它就不起作用你的答案好多了【参考方案3】:
var myDate = new Date();
var prettyDate =(myDate.getMonth()+1) + '/' + myDate.getDate() + '/' +
        myDate.getFullYear();
$("#date_pretty").val(prettyDate);

似乎可行,但可能有更好的方法......

【讨论】:

这很好用,除了两件事:1)我有点希望使用jQuery方法来获取当前日期,但也许没关系。 2)这个解决方案产生一个恰好在今天之前一个月的值! 哦——你是对的!看看 - w3schools.com/jsref/jsref_obj_date.asp - 月份是 0-11 - 你必须加 1.. 奇怪的是,getDate 是 1-31,但 getMonth 是 0-11.. 有一种更简单的方法..请参阅下面的帖子。 这个解决方案让我们直接显示文本并同时设置日期,而 CiscoIPPhone 的解决方案需要另一个步骤来显示值而不打开选择器。 对于setDate,您还可以使用日期选择器的常用相对表示法,例如,只需键入.datepicker('setDate', '+1d') 即可获取第二天。【参考方案4】:

setDate() 方法设置日期并更新关联的控件。方法如下:

$("#datepicker1").datepicker(
    dateFormat: "yy-mm-dd"
).datepicker("setDate", "0");

Demo

如文档中所述,setDate() 很乐意接受 javascript Date 对象、数字或字符串:

新日期可能是一个日期对象,也可能是当前日期中的一个字符串 格式(例如 '01/26/2009')、从今天开始的天数(例如 +7)或 值和句点字符串('y' 表示年份,'m' 表示月份,'w' 表示 周,“d”表示天,例如'+1m +7d'), 或 null 清除选中的 日期。

如果您想知道,在构造函数中设置defaultDate 属性不会更新关联的控件。

【讨论】:

为什么它在您的演示中有效。当我将此代码复制到我的站点时,当 pg 加载时对话框不断弹出。 这对我有用 - 上面接受的答案和其他选项没有。 这是一个比上述任何一个都好得多的解决方案。 目前这个问题的最佳答案,尽管我需要日期格式为“mm-dd-yy”以匹配日期选择器。【参考方案5】:

设置为今天

$('#date_pretty').datepicker('setDate', '+0');

设置为昨天

$('#date_pretty').datepicker('setDate', '-1');

以此类推,之前之后 今天的日期 >.

见jQuery UI › Methods › setDate。

【讨论】:

太好了,正如其他人所提到的,您一定已经调用过 datepicker() 一次,$(".date-pick").datepicker("setDate", '+0'); 这也如我所愿,因为我的 dateFormat 需要匹配 mysql 的日期格式 (yy-mm-dd)。此 setDate 将零填充添加到月份和日期。【参考方案6】:

解决办法是:

$(document).ready(function()
    $("#date_pretty").datepicker( 
    );
    var myDate = new Date();
    var month = myDate.getMonth() + 1;
    var prettyDate = month + '/' + myDate.getDate() + '/' + myDate.getFullYear();
    $("#date_pretty").val(prettyDate);
);

谢谢灰鬼!

【讨论】:

【参考方案7】:

这个对我有用。

$('#inputName')
  .datepicker()
  .datepicker('setDate', new Date());

【讨论】:

【参考方案8】:

此代码将确保使用您的日期选择器格式:

$('#date-selector').datepicker('setDate', new Date());

无需重新应用格式,它使用您在日期选择器初始化时预定义的日期选择器(如果您已分配它!);)

【讨论】:

【参考方案9】:

David K Egghead 的代码运行良好,谢谢!

$(".date-pick").datepicker(); 
$(".date-pick").datepicker("setDate", new Date()); 

我还设法将它修剪了一下,它也起作用了:

$(".date-pick").datepicker().datepicker("setDate", new Date()); 

【讨论】:

【参考方案10】:
$('input[name*="date"]').datepicker(
        dateFormat: 'dd-mm-yy',
        changeMonth: true,
        changeYear: true,
        beforeShow: function(input, instance)  
            $(input).datepicker('setDate', new Date());
        
    );

【讨论】:

【参考方案11】:

为了在加载时将日期选择器设置为某个默认时间(在我的情况下为当前日期),然后可以选择另一个日期,语法为:

    $(function()  
        // initialize the datapicker
        $("#date").datepicker();

        // set the time
        var currentDate = new Date();
        $("#date").datepicker("setDate",currentDate);

    //  set the options for the button  
        $("#date").datepicker("option",
            dateFormat: 'dd/mm',
            showOn: "button",
          // whatever option Or event you want 
        );
  );

【讨论】:

这个解决方案在 chrome 中对我有用,这里列出的其他解决方案没有【参考方案12】:

你有两个选择:

选项 A) 在您的日历中标记为“活动”,仅当您点击输入时。

Js

$('input.datepicker').datepicker(
                           
                            changeMonth: false,
                            changeYear: false,
                            beforeShow: function(input, instance)  
                                $(input).datepicker('setDate', new Date());
                            
                                                 
                     );

CSS

div.ui-datepicker table.ui-datepicker-calendar .ui-state-active,
        div.ui-datepicker table.ui-datepicker-calendar .ui-widget-content .ui-state-active  
            background: #1ABC9C;
            border-radius: 50%;
            color: #fff;
            cursor: pointer;
            display: inline-block;
            width: 24px; height: 24px;
        ​

选项 B) 默认输入今天。 您必须先填充日期选择器。

$("input.datepicker").datepicker().datepicker("setDate", new Date());

【讨论】:

选项 A 很好,因为日期选择器可以保持空白,直到要选择一个日期,此时它默认为当前日期【参考方案13】:

只是想我会加两分钱。选择器正在添加/更新表单上使用,因此如果编辑现有记录,则需要显示来自数据库的日期,否则需要显示今天的日期。以下对我来说很好用:

    $( "#datepicker" ).datepicker();
    <?php if (!empty($oneEVENT['start_ts'])): ?>
       $( "#datepicker" ).datepicker( "setDate", "<?php echo $startDATE; ?>" );
    <? else: ?>
       $("#datepicker").datepicker('setDate', new Date());   
    <?php endif; ?>
  );

【讨论】:

【参考方案14】:

要预填充日期,首先必须初始化 datepicker,然后传递 setDate 参数值。

$("#date_pretty").datepicker().datepicker("setDate", new Date());

【讨论】:

【参考方案15】:
var prettyDate = $.datepicker.formatDate('dd-M-yy', new Date());
alert(prettyDate);

将 prettyDate 分配给必要的控件。

【讨论】:

【参考方案16】:

试试这个

$(this).datepicker("destroy").datepicker(
            changeMonth: false, changeYear: false,defaultDate:new Date(), dateFormat: "dd-mm-yy",  showOn: "focus", yearRange: "-5:+10"
        ).focus();

【讨论】:

【参考方案17】:

这对我来说效果更好,因为有时我在调用 .datepicker('setDate', new Date()); 时遇到麻烦,因为如果我已经为 datepicker 配置了参数,它就会变得混乱。

$("#myDateText").val(moment(new Date()).format('DD/MM/YYYY'));

【讨论】:

【参考方案18】:

使用这个:

$(".datepicker").datepicker( dateFormat: 'dd-M-yy' ).datepicker('setDate', new Date());

以格式获取日期,例如:2019 年 10 月 10 日,这对用户来说更容易理解。

【讨论】:

【参考方案19】:
$(function()

$('.date-pick').datePicker().val(new Date().asString()).trigger('change');
);

来源:http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerDefaultToday.html

【讨论】:

我的浏览器无法识别 asString() 函数。我是这样做的: $(".date-pick").datepicker('setDate', new Date()); 我认为 asString() 应该是 toString()。 Kevin Luck 的 DatePicker 和 Jquery UI DatePicker 是两个截然不同的日期选择器。 @gamerzfuse jQuery UI 的日期选择器是基于 Kevin Luck 的。

以上是关于如何使用今天的日期预先填充 jQuery Datepicker 文本框?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ajax 和 jquery 从数据库中动态添加预先填充的表单

JQuery Datepicker:如果选择的日期是今天的日期

如何在 jquery UI datepicker 中禁用今天之前的日期?

如何在xsl中添加jquery函数(Date)

Jquery应该怎么给当前日期添加天数

FullCalendar jQuery 插件 - 设置今天的日期