为什么在没有发现元素的功能运行?
-
10-07-2019 - |
题
我有以下代码,然而如果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";
}
解决方案
在getDateFormat函数只要使用Javascript解析,因为它是一个对象文字符号内运行。
您表达被评价为
$(function() {
$("input.formdate").datepicker({
changeMonth: true,
changeYear: true,
dateFormat: <RESULT_FROM_CALLING_getDateFormat()>
});
});
其他提示
老答案:的点击 (基于问题的错误认识 - 见注释)的结果 因为我们在调用函数并传递而不是你应该在做什么其结果,:传递一个参考的函数(即,将它视为变量)
这样做:
$(function() {
$("input.formdate").datepicker({
changeMonth: true,
changeYear: true,
dateFormat: getDateFormat
});
});
<强> 更新 强>结果 检查jQuery UI的DatePicker的API后,你需要传递一个字符串,日期格式。点击 如果你不想让你的函数来执行,除非有一类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'
}
);
虽然它是有争议的,如果这是更多或更少的可读性。
结果
(有可能仍然高于短的方式,但我现在得走了。)
不隶属于 StackOverflow