我有以下代码,但是如果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"; }
Peter Bought.. 6
旧答案:(
基于对问题的误解 - 请参阅注释)
因为您正在调用函数并传递其结果,而不是您应该做的事情:传递对函数的引用(即将其视为变量).
做这个:
$(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' } );
虽然这或多或少可读,但值得商榷.
(可能还有比这更短的路,但我现在必须走.)
旧答案:(
基于对问题的误解 - 请参阅注释)
因为您正在调用函数并传递其结果,而不是您应该做的事情:传递对函数的引用(即将其视为变量).
做这个:
$(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后立即运行getDateFormat函数,因为它在对象文字表示法中.
您的表达式被评估为
$(function() { $("input.formdate").datepicker({ changeMonth: true, changeYear: true, dateFormat:}); });