我有以下代码,然而如果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'
    }
);

虽然它是有争议的,如果这是更多或更少的可读性。

结果

(有可能仍然高于短的方式,但我现在得走了。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top