Frage

Ich habe den folgenden Code, aber wenn die input.formdate nicht noch gefunden wird, wird die getDateFormat Funktion ausgeführt werden. Das macht keinen Sinn für mich.

Kennt jemand den Grund?

$(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";
}
War es hilfreich?

Lösung

Die GetDateFormat Funktion so schnell ausgeführt wird, wie Javascript analysiert wird, weil es in einer Objektliteral Notation ist.

Ihr Ausdruck wird ausgewertet, wie

$(function() {
    $("input.formdate").datepicker({
        changeMonth: true,
        changeYear: true,
        dateFormat: <RESULT_FROM_CALLING_getDateFormat()>
    });
});

Andere Tipps

Alte Antwort:
(basierend auf mis Verständnis der Frage - siehe Kommentare)
Da Sie die Funktion und vorbei sein Ergebnis anrufen, statt dessen, was Sie tun sollten:. Einen Verweis auf die Funktion übergeben (das heißt, es als eine Variable Behandlung)

Tun Sie dies:

$(function() {
    $("input.formdate").datepicker({
        changeMonth: true,
        changeYear: true,
        dateFormat: getDateFormat
    });
});

Update:
die jQuery UI Datepicker API Nach der Überprüfung, müssen Sie eine Zeichenfolge Datumsformat zu übergeben.
Wenn Sie nicht Ihre Funktion ausführen sollen, wenn mindestens ein Eingang mit einer Klasse von formdate ist, müssen Sie dies tun:

if ( $('input.formdate').length > 0 )
{
    $("input.formdate").datepicker
    (
        { changeMonth: true
        , changeYear: true
        , dateFormat: getDateFormat()
        }
    );
}

Alternativ, können Sie es mit einem Inline tun könnten, wenn:

$("input.formdate").datepicker
(
    { changeMonth: true
    , changeYear: true
    , dateFormat:
        $('input.formdate').length > 0 ? getDateFormat() : 'dd-mm-yy'
    }
);

Obwohl es fraglich ist, ob das ist mehr oder weniger lesbar.


(Es gibt wahrscheinlich noch einen kürzeren Weg als das, aber ich muss jetzt gehen.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top