javascript - 为什么将 jQuery UI 日期选择器的默认值设置为匿名函数不起作用?

标签 javascript jquery jquery-ui datepicker anonymous-function

我真的很好奇为什么将 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/

相关文章:

javascript - 如何 'get' 匹配 2 个属性/值对的 dom 元素的所有实例?

javascript - jQuery - 如何限制文本框的输入值

jquery - 在 JQuery 中动态合并值和绑定(bind)

javascript - 使用浏览器窗口更改 CSS 字体大小

javascript - 在 Javascript 中单行定义数组

Javascript: header 未定义

javascript - AngularJS 更改选择选项 ng-click

jquery - 使用 JQuery 定位 div 内展开的文本

javascript - 何时渲染模型以及何时渲染集合 - Backbone.js

javascript - jqueryui 可拖动移动图像与处理程序