2013-03-19 166 views
2

我有一个jQuery datepicker。我想将默认日期设置为“当前月份,当天(当前年份 - 18)”,但我设置defaultDate属性时遇到问题。显示的默认年份是1920年,据推测是1995年。任何人都可以帮忙吗?jQuery Datepicker将默认日期设置为“当前月份,当前日期,(当前年份-18)”

我的代码:

HTML

<input type="text" class="datepicker minimumSize" name="BirthDate" id="BirthDate" readonly="readonly"/> 

的JavaScript

var d = new Date(); 
var year = d.getFullYear() - 18; 
$('#BirthDate').datepicker({ changeYear: true, changeMonth: true, yearRange: '1920:' + year + '', defaultDate: d.getMonth()+d.getDay()+year}); 

的jsfiddle http://jsfiddle.net/jobzky/zg8Le/

+2

是否有人制作一个18+的网站? – mpen 2013-03-19 04:25:57

回答

4

尝试

var d = new Date(); 
var year = d.getFullYear() - 18; 
d.setFullYear(year); 
$('#BirthDate').datepicker({ changeYear: true, changeMonth: true, yearRange: '1920:' + year + '', defaultDate: d}); 

演示:Fiddle

+0

我试过你的演示。下拉列表中的默认年份是正确的,但我想知道日历中的当天没有被选中。但如果我删除了d.setFullYear(year);当前日期现在选择,但默认年份回到1920 – 2013-03-19 04:38:13

+0

这是因为条件,你说的年份范围是在1920年和1995年之间,但默认日期是2013年,你没有看到那里的不匹配 – 2013-03-19 04:45:52

+0

我认为删除d .setFullYear(一年);仍然将1995年作为自从我们减去18年之前的这种方法之前的最高日期。测试目的是否删除d.setFullYear(year);是要检查当天是否被选中,如果包含当前日期不会被选中 – 2013-03-19 04:52:14

0

试试这个。这将解决你的问题

var d = new Date(); 
var year = d.getFullYear() - 18 ; 

$('#BirthDate').datepicker({ 
    changeYear: true, 
    changeMonth: true, 
    yearRange: '1920:' + year, 
    defaultDate: new Date(year, d.getMonth(), d.getDate()) 
    }); 
+0

抱歉,您的意思是?是不是yearRange用于当你想具体说明哪一年和哪一年将会在下拉菜单中显示? – 2013-03-19 04:23:19

+0

@Jobert Enamno试试这个 – PSR 2013-03-19 04:39:19

1

在你拨弄你有defaultYear这是不正确的选项。在这里,你有defaultDate,并且按照你将日月和月加在一起的方式(也不太可能是你的意思),似乎你想让它成为日期。

我怀疑你想要这个:

$('#BirthDate').datepicker({ 
    changeYear: true, 
    changeMonth: true, 
    yearRange: '1920:' + year, 
    defaultDate: new Date(year,d.getMonth(),d.getDay()) 
}); 
+0

默认日期是正确的,但所选日期不正确。它不是指向当天 – 2013-03-19 04:47:31

相关问题