Как да деактивирате няколко опции за избор

Как да деактивирате няколко опции в един избор. Например имам 2 избора с 5 и 3 опции. Така че, ако избера 3-та опция във втория избор, искам да деактивирам 3-та, 4-та и 5-та опция в първия избор:

<select name="smjer">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>

Втори избор:

<select name="godina" >
<option value="1" >1.</option>
<option value="2" >2.</option>
<option value="3">3.</option>
</select>

Опитах да премахна опциите, но след това не мога да ги извлека без опресняване на страницата:

var ary=[3,4,5];
$('[name=smjer] option').filter(function(){
    return ($.inArray(parseInt(this.value),ary) >-1);
}).remove();

person Ivan Pandžić    schedule 17.04.2013    source източник
comment
Е, вие ги .removeиграете. Не очаквахте да ги няма?   -  person cHao    schedule 18.04.2013
comment
използвайте показване/скриване вместо премахване   -  person Huangism    schedule 18.04.2013


Отговори (2)


Можете просто да ги скриете:

var ary = [3, 4, 5];
$('[name=smjer] option').filter(function () {
    return ($.inArray(parseInt(this.value), ary) > -1);
}).hide();

и когато отново е необходимо, покажете го:

var ary = [3, 4, 5];
$('[name=smjer] option').filter(function () {
    return ($.inArray(parseInt(this.value), ary) > -1);
}).show();

За да го направите още по-добър, можете да направите следното:

var ary = [3, 4, 5];

// Get the options to be hidden/shown
var $options = $('[name=smjer] option').filter(function () {
    return ($.inArray(parseInt(this.value), ary) > -1);
});

// Hide the options
$options.hide();

// Show the options
$options.show();
person palaѕн    schedule 17.04.2013

Можете също така да ги деактивирате:

var ary=[3,4,5];
$('[name=smjer] option').filter(function(){
    return ($.inArray(parseInt(this.value),ary) >-1);
}).prop('disabled', true);
person saidozcan    schedule 17.04.2013
comment
.disabled="disabled" вероятно не прави това, което мислите, че прави. Опитайте .prop('disabled', true) вместо това. Разбира се, тогава все още трябва да се притеснявате за повторното им активиране, когато стойността на другото поле за избор се промени... - person cHao; 18.04.2013
comment
@nnnnnn: Всички браузъри, които струват пукната пара. disabled е стандартен атрибут на <option> елемента и се появява като DOM свойство с възможност за настройка. Препратките, които виждам, казват, че всички браузъри го поддържат. - person cHao; 18.04.2013