我有以下代码,但是如果未找到 input.formdate
,它仍将运行 getDateFormat
函数。这对我来说没有意义。
有谁知道原因吗?
$(function() {
$("input.formdate").datepicker({
changeMonth: true,
changeYear: true,
dateFormat: getDateFormat()
});
});
function getDateFormat()
{
var format = 'DMY';
if (document.edit_form && document.edit_form.date_format)
format = document.edit_form.date_format.value;
if (format = "DMY")
return "dd-mm-yy";
else
return "mm-dd-yy";
}
最佳答案
旧答案:
(基于对问题的误解 - 请参阅评论)
因为您正在调用函数并传递其结果,而不是您应该做的:传递对函数的引用(即将其视为变量)。
这样做:
$(function() {
$("input.formdate").datepicker({
changeMonth: true,
changeYear: true,
dateFormat: getDateFormat
});
});
更新:
查看jQuery UI DatePicker API后,需要传递一个字符串给dateFormat。
如果您不希望您的函数执行,除非至少有一个带有一类 formdate 的输入,您需要这样做:
if ( $('input.formdate').length > 0 )
{
$("input.formdate").datepicker
(
{ changeMonth: true
, changeYear: true
, dateFormat: getDateFormat()
}
);
}
或者,如果满足以下条件,您可以使用内联来实现:
$("input.formdate").datepicker
(
{ changeMonth: true
, changeYear: true
, dateFormat:
$('input.formdate').length > 0 ? getDateFormat() : 'dd-mm-yy'
}
);
虽然这是否或多或少可读性值得商榷。
(可能还有更短的路,但我现在必须走了。)
关于javascript - 为什么函数在没有找到元素时运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/636867/