كيف يمكنك إعادة تعبئة خيارات تم إنشاؤها ديناميكيًا لحقل تحديد؟
-
03-07-2019 - |
سؤال
خلفيةلديّ حقلان محددان متسلسلان معًا: المدة والتردد. عندما يحدد المستخدم تردد ، يتم إدخال خيارات المدة ديناميكيًا. هناك خيارات افتراضية ، ولكن هذه فقط حتى لا يكون الحقل فارغًا عندما يقوم المستخدم بتوسيعه.
على سبيل المثال ، خيارات التردد هي "اليوم" ، "آخر يوم" ، و "أسبوع". إذا اخترت "اليوم" ، فإن خيارات التردد تتغير إلى "5 أيام" و "15 يومًا" و "30 يومًا".
مشكلةتأتي المشكلة عندما يقدم المستخدم النموذج بالأخطاء ، ويتم إرجاع النموذج مع إعادة تمييز جميع حقول النماذج وتسليط الضوء على الأخطاء-باستثناء حقل تحديد التردد-الذي يتم إنشاء خياراته ديناميكيًا. لم يتم تسليط الضوء عليه وخياراتها هي الخيارات الافتراضية.
هل هناك طريقة يمكنني من خلالها إعادة تعبئة هذه الخيارات إذا قام المستخدم بخطأ مع خطأ. نحن نقوم بالكثير من التحقق من صحة JavaScript ، لذلك لا ينبغي أن يحدث هذا الموقف في كثير من الأحيان ، ولكن نود أن نتعرف على خطأ قدر الإمكان للمستخدمين.
شفرةأنا أستخدم jQuery ومكوَّر jQuery يسمى Cascade لسلسلة الحقلين معًا. ((http://plugins.jquery.com/project/cascade)
ها هي JavaScript المخصصة الخاصة بي.
يولد هذا البرنامج النصي قائمة الخيارات:
var list1 = [
{'When':'86400','Value':' ','Text':' '},
{'When':'172800','Value':' ','Text':' '},
{'When':'604800','Value':' ','Text':' '},
{'When':'86400','Value':'432000','Text':'5 days'},
{'When':'86400','Value':'1296000','Text':'15 days'},
{'When':'86400','Value':'2505600','Text':'30 days'},
{'When':'172800','Value':'1296000','Text':'15 days'},
{'When':'172800','Value':'2505600','Text':'30 days'},
{'When':'172800','Value':'3888000','Text':'45 days'},
{'When':'604800','Value':'2505600','Text':'4 weeks'},
{'When':'604800','Value':'3715200','Text':'6 weeks'},
{'When':'604800','Value':'4924800','Text':'8 weeks'}
];
function commonTemplate(item) {
return "<option value='" + item.Value + "'>" + item.Text + "</option>";
};
function commonMatch(selectedValue) {
return this.When == selectedValue;
};
وهذا هو البرنامج النصي الذي يؤدي إلى توليد خيارات تحديد:
jQuery("#duration).cascade("#frequency",{
list: list1,
template: commonTemplate,
match: commonMatch
})
السؤالأي أفكار حول كيفية الحصول على خيارات التردد التي تم إنشاؤها ديناميكيًا لإعادة تمثيلها عند إرجاع النموذج إلى المتصفح بأخطاء؟ هل يمكن إما استخدام البرنامج المساعد Cascade الذي أستخدمه حاليًا أو طريقة أخرى؟
المساعدة موضع تقدير كبير. :-)
المحلول
أنا لست على دراية بهذا البرنامج المساعد ، لكن لا يمكنك إطلاق النار على change()
حدث #duration
و/أو #frequency
على Document.ready؟
$(document).ready(function() {
$('#duration').change();
$('#frequency').change();
});
أنا متأكد تمامًا من أن كل البرنامج النصي الذي يقوم به هو ملزم لأشياء تغيير الحدث الخاص بـ Select (افتراضيًا ، على الأقل) بحيث يجب أن يؤدي ذلك إلى تشغيل المكون الإضافي للعمل السحر ...