Цитата:
Сначала пойдут функции которые будут отвечать за поведение списков. И уже после всех этих функций, я задаю переменные и получаю значения списков. Так? А по коду подскажите еще $('#srochnost').on('change', function() { if(!this.value) return; $('#rejim option').slice(0, -1) .prop('disabled', this.value==2) .end() .eq(3) .prop('selected', this.value==2) }); Тут мы для опции 2 в первом списке подставляли опцию 3 во втором списке. Если немного изменить задачу. При выборе опции 2 в первом списке во втором нужно оставить например опции с value равным 5, 6, 7, 9, 13. При выборе опции 3 в первом списке во втором нужно оставить например опции с value равным 1,2,3,8,12. При этом опцию во втором списке подставлять и выбирать по умолчанию не нужно. |
Цитата:
$('#rejim-opt-null').fadeOut(); $('#rejim-opt-day').fadeOut(); $('#rejim-opt-night').fadeOut(); и что можно написать проще: $('#rejim-opt-null,#rejim-opt-day,#rejim-opt-night').fadeOut(); лишено смысла, так как всех этих эффектов пользователь все равно не увидит. Тогда уж просто css({dispalay: 'none/block'}). Что касается каких-то сложных условий, как то при выборе второго списка скрыть 5, 6, 7, 9, 13, а третьего 1,2,3,8,12, то лучше эти параметры задать через атрибут. При выборе получать эти значения и скрывать указанные опции. PS. Например так: <script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script> $(function() { $('#a').on('change', function() { var o = $(this).children(':selected').data('mod'); $('#b').val('') .find('option') .show() .filter('[value='+o.join('],[value=')+']') .hide() }) }); </script> <select id="a"> <option value="" selected disabled>Select...</option> <option data-mod="[2,5,7,9]" value="1">Option 1</option> <option data-mod="[3,4,6,8,9]" value="2">Option 2</option> </select> <select id="b"> <option value="">Select...</option> <option value="1">Option 1</option> <option value="2">Option 2</option> <option value="3">Option 3</option> <option value="4">Option 4</option> <option value="5">Option 5</option> <option value="6">Option 6</option> <option value="7">Option 7</option> <option value="8">Option 8</option> <option value="9">Option 9</option> </select> |
Цитата:
|
Цитата:
Фильтр лучше бы было задать так: .filter(function() { return ~o.indexOf(+this.value) //или если с поддержкой IE8, то можно средствами JQ //return ~$.inArray(+this.value, o) }) |
Часовой пояс GMT +3, время: 03:57. |