كيفية تعبئة حقل استنادا إلى التحديد في الحقل السابق؟
-
07-07-2019 - |
سؤال
في النموذج الذي قمنا بتصميم، لدينا حقل "الدول" التي تسمح لمستخدميها لتحديد ولايات متعددة في وقت واحد. هناك حقل "المدينة" التي يجب أن يتم ملؤها حسب التحديد في حقل "الدولة". وصحيح ملؤها القيم في حقل "المدينة" إذا تم تحديد ولاية واحدة فقط. ومع ذلك، فإنه لا يظهر بشكل صحيح عندما يتم اختيار العديد من الدول.
يرجى اقتراح حل روبي لنفسه.
المحلول
والمشكلة تكمن في التعبير :with
في observe_field
الخاص بك. سوف document.getElementById('usa_states_').value
فقط بإرجاع قيمة واحدة وليس كل القيم المحددة.
ولست متأكدا إذا كان هناك طريقة للتعامل مع هذا تلقائيا في القضبان ولكن هو حل واحد لكتابة وظيفة جافا سكريبت والتي سوف بناء سلسلة من كل القيم المحددة مفصولة بفواصل. منها مثلا.
function selectedValuesAsString(multiselect) {
selectedValues = new Array();
for (i = 0; i < multiselect.length; i++) {
if (multiselect[i].selected) {
selectedValues.push(multiselect[i].value);
}
}
return selectedValues.join();
}
وثم تحديث :with
أن يكون شيئا مثل:
:with => "'state='+selectedValuesAsString(document.getElementById('usa_states_')"
وأدى ذلك إلى انقسام أخيرا القيم داخل عمل جهاز تحكم.