Да, я думал об этом, такая реализация хороша. Но особенности CMS таковы, что списки уже созданы в том виде в котором имеются. И ради небольшого дополнения переписывать совсем не хочется...
Андрей, в данном случае работает. При изменении на "--" действительно исчезает. Но если изменить снова с "--" на "Есть" - появляется список "АВТО", а вот поле "Сколько лет авто" нет.
И так пробовал. Но дело в том, что в данном примере способ show/hide не помогает.
Мы прячем список, в котором уже выбрана позиция показа другого поля. Если его не видно, вернее у блока в котором он содержится - display:none, значение ведь он сохраняет ).
show/hide - вторая часть кода будет растянута на 50 строк...
Спасибо. Столкнулся с проблемой.
Если в первом списке мы выбрали, например, 2
Появляется второй список. Тут все в порядке.
После того как во втором списке я выбираю, например, 3
Появляется #f_lr1rooq - тут тоже все работает.
Когда я в первом списке 2 изменяю на 1
Второй список исчезает - все как нужно.
НО! при этом поле #f_lr1rooq уже не исчезает.
Как я понимаю из за того, что в исчезнувшем списке выбрана позиция, при которой это поле #f_lr1rooq должно показываться. Как это лечится?
По аналогии, которую с вашим решением, попытался сделать следующее
$(document).ready(update);
$('#f_lr1ro').change(update);
function update() {
var val = +$('#f_lr1ro option:selected').val();
var showFirst = [2, 3].indexOf(val) >= 0;
$('#f_lr1rowtd').toggle(showFirst); };
Но безрезультатно, в чем неверность решения? Как понимаю, данная конструкция для одного элемента не приемлема?
Замечательно работает. Спасибо. Сократил таким образом.
$(document).ready(function(){
var val = +$('#f_lr1rowtd option:selected').val();
var showFirst = [3, 4, 5, 6, 7, 8].indexOf(val) >= 0;
var showSecond = [9, 10, 11, 12].indexOf(val) >= 0;
$('#f_lr1rooq').toggle(showFirst);
$('#f_lr1ronq').toggle(showSecond);
});
$('#f_lr1rowtd').change(function () {
var val = +$('#f_lr1rowtd option:selected').val();
var showFirst = [3, 4, 5, 6, 7, 8].indexOf(val) >= 0;
var showSecond = [9, 10, 11, 12].indexOf(val) >= 0;
$('#f_lr1rooq').toggle(showFirst);
$('#f_lr1ronq').toggle(showSecond);
});
Вы верно подметили насчет 2-х и более элементов.
Дело в том, что есть еще один список #f_lr1ro.
Так вот, в зависимости от его значения, необходимо чтобы вызывался/показывался список #f_lr1rowtd (который фигурирует выше)...
... а так же в зависимости от значений #f_lr1ro не показывались некоторые значения в самом выпадающем списке #f_lr1rowtd.
Надеюсь вы меня поняли. Спасибо еще раз за помощь.
Да не равен Х!
Я показал какая часть детального кода (который я вам написал в начале) относится к другой части с помощью одинаковых чисел.
Условия сложные и в зависимости от них происходит обработка переменных.
Логика кода такова: (n != 10) ? ((n != 9) ? ((n != 8) ? 0 : 8) : 9) : 10
1 условие проверяет равен ли n 10. Если да, - выводит 10, если нет, - переходит ко вложенному условию (2)
2. Если n равен 9 - выводит 9, если нет - переходит ко вложенному условию (3)
3. Если n равен 8 - выводит 8, если нет - то в итоге выводит 0.