为什么不将 jQuery UI 日期选择器的默认值设置为匿名函数
Why doesn't setting the default value of a jQuery UI datepicker to an anonymous function work?
我真的很好奇为什么这段将 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
获取函数返回的日期值,而不是函数本身:
get_recipient_default_birth_date()
在第二个中,您将传递一个函数对象。 该选项不支持函数。
您已经描述了它不起作用的原因:您将匿名函数设置为值。
不是匿名函数的返回值。
在第一个工作示例中,您正在调用返回默认值值的函数。在第二个示例中,您只需定义一个匿名函数并将其直接赋值 - 而无需调用它。
如果你想使用这样的匿名函数,你需要实际调用它,如下所示:
defaultValue: (function() { /* stuff */; return something; })()
相关文章:
- 如何在页面加载时设置函数的条件
- 如何在Javascript中设置函数在上一次结束时启动
- 在对象中定义JavaScript获取和设置函数,而不使用“;这个“;
- 杰辛特 |传递默认设置 |函数声明和“this”
- 在运行时用JavaScript设置函数的名称
- 用对象设置函数变量's值
- 当我在tinmyce.int()中编写设置函数时,tinymce消失了,只有纯文本区域可见
- 如何使用JavaScript变量设置函数集css宽度
- Javascript;取消设置函数
- 设置函数图像样式
- 为什么我的设置函数之间的超时不起作用
- jQuery 设置函数执行前的等待时间
- 在Node.js中设置函数执行顺序
- 如何在javascript中设置函数的优先级
- 设置函数变量与使用对象文字相同
- 以 JavaScript 对象文字表示法设置函数的属性
- 使用jQuery's.prop方法来设置函数的属性
- 设置函数的超时时间
- 显式设置函数的返回类型
- 当bool值变为true时,如何设置函数调用