كيفية تعبئة حقل استنادا إلى التحديد في الحقل السابق؟

StackOverflow https://stackoverflow.com/questions/1431332

سؤال

في النموذج الذي قمنا بتصميم، لدينا حقل "الدول" التي تسمح لمستخدميها لتحديد ولايات متعددة في وقت واحد. هناك حقل "المدينة" التي يجب أن يتم ملؤها حسب التحديد في حقل "الدولة". وصحيح ملؤها القيم في حقل "المدينة" إذا تم تحديد ولاية واحدة فقط. ومع ذلك، فإنه لا يظهر بشكل صحيح عندما يتم اختيار العديد من الدول.

يرجى اقتراح حل روبي لنفسه.

هل كانت مفيدة؟

المحلول

والمشكلة تكمن في التعبير :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_')"

وأدى ذلك إلى انقسام أخيرا القيم داخل عمل جهاز تحكم.

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