سؤال

لدي الكود التالي، ولكن إذا كان 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 حالما يتم تحليل جافا سكريبت لأنه ضمن التدوين الحرفي الكائن.

ويتم تقييم التعبير الخاص بك كما

$(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، ستحتاج إلى تمرير سلسلة إلى 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'
    }
);

على الرغم من أنه قابل للنقاش إذا كان هذا أكثر أو أقل قابلية للقراءة.


(ربما لا يزال هناك طريق أقصر من ذلك، ولكن يجب أن أذهب الآن.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top