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

Mar*_*cus 232 javascript jquery jquery-ui date jquery-ui-datepicker

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

$(document).ready(function(){
    $("#date_pretty").datepicker({ 
    });
});
Run Code Online (Sandbox Code Playgroud)

当然还有HTML ......

<input type="text" size="10" value="" id="date_pretty"/>
Run Code Online (Sandbox Code Playgroud)

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

Cis*_*one 559

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

这很简洁,完成工作:

$(".date-pick").datepicker('setDate', new Date());
Run Code Online (Sandbox Code Playgroud)

  • 这是一个比公认的解决方案更好的解决方案! (102认同)
  • 最近的浏览器更新后,Chrome不再适用 (9认同)
  • 这不起作用,首先你应该调用$(".date-pick").datepicker(); 然后是$(".date-pick").datepicker('setDate',new Date()); (7认同)
  • 请参阅下面的更新代码..它有一些小修复 (4认同)
  • 这个解决方案很优雅 (3认同)
  • 作品.我正在设置`$(".date-pick").datepicker().datepicker('setDate',new Date()); `th (3认同)
  • 这是一个实际上对我有用的而不是公认的解决方案.谢谢 (2认同)
  • @QuinnDaley谢谢 - 我在我的回答中添加了警告. (2认同)
  • 在Firefox或IE中也不起作用 (2认同)

Rav*_*Ram 219

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

$(".date-pick").datepicker();
$(".date-pick").datepicker("setDate", new Date());
Run Code Online (Sandbox Code Playgroud)

或者在你的datepicker初始化之后链接你的setDate方法调用,如对这个答案的评论中所述

$('.date-pick').datepicker({ /* optional option parameters... */ })
               .datepicker("setDate", new Date());
Run Code Online (Sandbox Code Playgroud)

不适用于

$(".date-pick").datepicker("setDate", new Date());
Run Code Online (Sandbox Code Playgroud)

注意:此处描述可接受的setDate参数

  • $(".selector").datepicker().datepicker("setDate",new Date()); 将工作,并不会让jQuery两次搜索DOM. (13认同)
  • 使用jQueryUI 1.8我发现这个解决方案是唯一(理智)实现这一目标的方法. (3认同)

luc*_*cas 71

var myDate = new Date();
var prettyDate =(myDate.getMonth()+1) + '/' + myDate.getDate() + '/' +
        myDate.getFullYear();
$("#date_pretty").val(prettyDate);
Run Code Online (Sandbox Code Playgroud)

似乎工作,但可能有更好的方式..

  • 对于`setDate`,您也可以使用datepicker的常用相对表示法,例如,为了得到第二天只需键入`.datepicker('setDate','+ 1d')`. (4认同)
  • 有一种更简单的方法..请参阅下面的帖子. (3认同)
  • 哦 - 你是对的!检查出来 - http://www.w3schools.com/jsref/jsref_obj_date.asp - 月份是0-11 - 你必须加1 ..好奇地,getDate是1-31,但getMonth是0-11. . (2认同)

Sal*_*n A 57

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

$("#datepicker1").datepicker({
    dateFormat: "yy-mm-dd"
}).datepicker("setDate", "0");
Run Code Online (Sandbox Code Playgroud)

演示

如文档中所述,setDate()愉快地接受JavaScript Date对象,数字或字符串:

新日期可以是Date对象或当前日期格式的字符串(例如'01/26/2009'),从今天起的天数(例如+7)或一串值和句点('y'表示年,'m'持续数月,'w'持续数周,'d'持续数天,例如'+ 1m + 7d'),或为空以清除所选日期.

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


小智 25

设置为今天:

$('#date_pretty').datepicker('setDate', '+0');
Run Code Online (Sandbox Code Playgroud)

设置为昨天:

$('#date_pretty').datepicker('setDate', '-1');
Run Code Online (Sandbox Code Playgroud)

今天的日期之前之后的 任何天数等等.

请参阅jQuery UI>方法> setDate.


Mar*_*cus 9

解决方案是:

$(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);
});
Run Code Online (Sandbox Code Playgroud)

谢谢grayghost!


小智 7

此代码将确保使用您的datepicker格式:

$('#date-selector').datepicker('setDate', new Date());
Run Code Online (Sandbox Code Playgroud)

无需重新应用格式,它在datepicker初始化时使用了datepicker预定义的一个(如果已经分配了它!);)


小智 7

这个对我有用.

$('#inputName')
  .datepicker()
  .datepicker('setDate', new Date());
Run Code Online (Sandbox Code Playgroud)


小智 5

David K Egghead的代码完美无缺,谢谢!

$(".date-pick").datepicker(); 
$(".date-pick").datepicker("setDate", new Date()); 
Run Code Online (Sandbox Code Playgroud)

我还设法修剪了一下它也有效:

$(".date-pick").datepicker().datepicker("setDate", new Date()); 
Run Code Online (Sandbox Code Playgroud)