Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   select - переключатель (https://javascript.ru/forum/jquery/18018-select-pereklyuchatel.html)

kalina 13.06.2011 13:37

select - переключатель
 
Есть селект и набор чекбоксов. Необходимо disable определённые чекбоксы.
<select>
<option value="zero">- выберите -</option>
<option value="aaa" id="aaa">aaa</option>
<option value="bbb" id="bbb">bbb</option>
<option value="ссс" id="ссс">ссс</option>
<option value="ddd" id="ddd">ddd</option>
</select>

<label id="111"><input type="checkbox" name="f">111</label>
<label id="222"><input type="checkbox" name="f">222</label>
<label id="333"><input type="checkbox" name="f">333</label>
<label id="444"><input type="checkbox" name="f">444</label>
<label id="555"><input type="checkbox" name="f">555</label>
Пример работы:
Выбрал aaa: disable 111+222+444
Выбрал bbb: disable 111+333+444
Выбрал ccc: disable 222+444+555
Выбрал ddd: disable false
Подскажите как реализовать.
Спасибо.

melky 13.06.2011 14:36

создаешь хеш, где пишешь, что скрывать при нажатии aaa,bbb, или чего-нибудь еще.

вешаешь обработчик на изменение верхнего чекбокса, при изменении ищешь значения в хеше и ставишь атрибут disable на те,которые указаны в хеше

пример хеша :


var A = {
 
        'aaa' : [111,222,444],
        'bbb' : [111,333,444]

}


и так далее

kalina 13.06.2011 16:30

А можно пример?
Я слаб в теме... :(

walik 13.06.2011 19:11

<select onchange="change(this, 'checkboxes');">
<option value="zero">- выберите -</option>
<option value="aaa" id="aaa">aaa</option>
<option value="bbb" id="bbb">bbb</option>
<option value="ccc" id="ccc">ccc</option>
<option value="ddd" id="ddd">ddd</option>
</select>

<div id="checkboxes">
<label id="111"><input type="checkbox" name="f">111</label>
<label id="222"><input type="checkbox" name="f">222</label>
<label id="333"><input type="checkbox" name="f">333</label>
<label id="444"><input type="checkbox" name="f">444</label>
<label id="555"><input type="checkbox" name="f">555</label>
</div>
<script>
var arr = {'aaa':['111','222','444'],'bbb':['111','333','444'],'ccc':['222','444','555'],'ddd':''};

eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};
if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}
k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){
p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}
return p}('e f(6,5){7 1=6.g;7 3=8.b(5).c(\'a\');4(i=0;i<3.9;i++)3[i].2=h;4(i=0;i<d[1].9;i++){8.b(d[1][i]).c(\'a\')[0].2=\'2\'}}',19,19
,'|v|checked|checkboxes|for|id|select|var|document|length|input|getElementById|getElementsByTagName|arr|function|change|value|false|'.split('|'),0,{}))
</script>

kalina 13.06.2011 20:56

Спасибо, добрый человек!

cyberkatze 13.06.2011 21:45

Цитата:

Сообщение от walik (Сообщение 108483)
<script>
var arr = {'aaa':['111','222','444'],'bbb':['111','333','444'],'ccc':['222','444','555'],'ddd':''};

eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};
if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}
k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){
p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}
return p}('e f(6,5){7 1=6.g;7 3=8.b(5).c(\'a\');4(i=0;i<3.9;i++)3[i].2=h;4(i=0;i<d[1].9;i++){8.b(d[1][i]).c(\'a\')[0].2=\'2\'}}',19,19
,'|v|checked|checkboxes|for|id|select|var|document|length|input|getElementById|getElementsByTagName|arr|function|change|value|false|'.split('|'),0,{}))
</script>


можно объяснить немного эту часть кода?

и почему нельзя было сделать более попроще с jQ ?

walik 13.06.2011 23:15

Цитата:

Сообщение от cyberkatze
почему нельзя было сделать более попроще с jQ ?

Мне так больше нравится.

melky 13.06.2011 23:16

Цитата:

Сообщение от walik (Сообщение 108526)
Мне так больше нравится.

))) так кода меньше)))

cyberkatze 14.06.2011 10:21

ответа так и не получил )

walik 14.06.2011 10:43

Цитата:

Сообщение от cyberkatze
ответа так и не получил )

Ты ждешь от меня объяснений кода ? почитай учебник, и все что там написано покажется тебе знакомым. А весь код объяснять мне лично лень, ты спроси конкретно что тебе не понятно. :)


Часовой пояс GMT +3, время: 16:18.