我真的很好奇为什么将 defaultDate 设置为 25 年前从今天开始的日期的代码可以正常工作...
$('div.recipient_modal input[name="birth_date"]:first').datepicker({
changeMonth: true,
changeYear: true,
defaultDate: get_recipient_default_birth_date(),
yearRange: 'c-125:' + new Date().getFullYear()
});
function get_recipient_default_birth_date()
{
var d = new Date();
var y = d.getFullYear() - 25;
d.setFullYear(y);
return $.datepicker.formatDate('mm/dd/yy', d);
}
但是当我尝试使用匿名函数将默认日期设置为 25 年前的今天时,而不是调用具有如下相同代码的命名函数...
$('div.recipient_modal input[name="birth_date"]:first').datepicker({
changeMonth: true,
changeYear: true,
defaultDate: function() {
var d = new Date();
var y = d.getFullYear() - 25;
d.setFullYear(y);
return $.datepicker.formatDate('mm/dd/yy', d);
},
yearRange: 'c-125:' + new Date().getFullYear(),
});
我在控制台中收到以下错误...
Uncaught TypeError: Object function () {
var d = new Date();
var y = d.getFullYear() - 25;
d.setFullYear(y);
return $.datepicker.formatDate('mm/dd/yy', d);
} has no method 'getTime'
谁能解释这两个赋值的区别以及为什么匿名函数不起作用而命名函数起作用?
谢谢。
最佳答案
不同之处在于,在您的第一个示例中,您实际上是在调用 函数,因此 datepicker
正在获取 date 值函数,而不是函数本身:
get_recipient_default_birth_date()
在第二个中,您要传递一个函数对象。该选项不支持函数。
关于javascript - 为什么将 jQuery UI 日期选择器的默认值设置为匿名函数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10820822/