Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Динамические чекбоксы


Автор: denlem 3.11.2007, 11:49
Подскажите , как переделать данный скрипт, чтобы вмсто селекта(второго нижнего) выводил группу полей чекбоксов? - 
 Название: <input type=checkbox name=c[] value='/значение подвыбора/'>

вот он скрипт с хтмл кодом:

Код

<SELECT id=vybor onchange="chkd('','vybor','podvybor');" name=vybor> 
    <OPTION value=1>выбор первый</OPTION> <OPTION value=2>выбор второй</OPTION> 
    <OPTION value=3>выбор третий</OPTION></SELECT> <br />
<SELECT id=podvybor name=podvybor></SELECT>
<script language=javascript>
    var linkas_lists = new Array();
    linkas_lists['1'] = new Array();
            linkas_lists['1']['1'] = 'подвыбор первый';
            linkas_lists['1']['2'] = 'подвыбор второй';
    linkas_lists['2'] = new Array();
            linkas_lists['2']['3'] = 'подвыбор третий';
            linkas_lists['2']['4'] = 'подвыбор четвертый';
    linkas_lists['3'] = new Array();
            linkas_lists['3']['5'] = 'подвыбор пятый';
            linkas_lists['3']['6'] = 'подвыбор шестой';

    function chkd(selected,vyb,podvyb){
        var iter=-1;
        var makeSelect  = document.getElementById(vyb);
        var modelSelect = document.getElementById(podvyb);
        var valueSelected = makeSelect.options[makeSelect.selectedIndex].value;
        if(modelSelect)
        {
            if (valueSelected!='')
            {
                while(modelSelect.firstChild) modelSelect.removeChild(modelSelect.firstChild);
                modelList = linkas_lists[valueSelected];
                    modelSelect.selectedIndex = 0;
                    for (i in modelList)
                    {
                        modelSelect.options[iter+1] = new Option(modelList[i],i);
                        if (selected==i) modelSelect.options[iter+1].selected = true;
                        if (modelList[i].match(/[А-Я]{3,}/)) modelSelect.options[iter+1].selected = true;
                        iter++;
                    }
            }
            else
            {
                while(modelSelect.firstChild) modelSelect.removeChild(modelSelect.firstChild);
            }
        }
    }
    </script>


Вижу что нужно плясать от этой строки  - var valueSelected = makeSelect.options[makeSelect.selectedIndex].value;
и подобных.., а в хтмле вместо второго селекта <div ..> поставить..  но как это сделать подскажите..


Автор: GIK 4.11.2007, 14:24
В первую очередь надо создать сам чекбокс и сделать его "недоступным". Или тебе надо динамически собирать объект сheckbox ?

Автор: denlem 4.11.2007, 19:25
Да, именно, нужно чтобы динамически генерились поля чекбоксы, в зависимости от выбора селект-меню.
Например при выборе "выбор первый" сгенерились 2 чекбокса
Подвыбор первый: <input type=checkbox name=c[] value='1'>
Подвыбор второй: <input type=checkbox name=c[] value='2'>

Дальше, при выборе "выбор второй" сгенерились 2 (n) чекбокса
Подвыбор третий: <input type=checkbox name=c[] value='3'>
Подвыбор четвертый: <input type=checkbox name=c[] value='4'>

и т д

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)