jQuery изменить список выбора значения на основе двух значений параметра

0

У меня есть два списка выбора и нужно изменить значение одного на основе их текущего состояния, поэтому:

Выберите список 1:

Option A (All)
Option B (12)
Option C (13)

Выберите список 2:

Option 1 (All)
Option 2 (14)
Option 3 (15)
Option 4 (16)

Если выбрать список 1 = Вариант C && выбрать список 2 = Вариант 2, то измените список выбора 1 на вариант A.

У меня есть следующий код:

$('#edit-lines, #edit-trading-options').change(function () {
  if ($('#edit-lines').val().indexOf(13) && $('#edit-trading-options').val().indexOf(14) > -1) $('#edit-trading-options').val('All');
});

Но что-то не так. Второй выбор остается в "Все" все время.

Благодаря,

Стив

  • 2
    вместо .val (). indexOf (13), вы должны использовать .val () == 13.
  • 0
    Вы можете изменить свою ситуацию?
Показать ещё 2 комментария
Теги:

2 ответа

2

Если только эти два конкретных варианта, сделайте следующее:

$('#edit-lines, #edit-trading-options').change(function () {
  if ($('#edit-lines').val() == 13 && $('#edit-trading-options').val() == 14)
     $('#edit-trading-options').val('All');
});
  • 0
    Спасибо Дэвид. Только что попробовал в скрипте jsfiddle.net/mj9L7/1 и прекрасно работает. У меня также есть слой AJAX, который автоматически отправляется при изменении состояния любого списка выбора. Используя код в dev, он не будет работать, пока я не обновлю страницу. Я предполагаю, что это связано? Любые идеи, как я мог предотвратить это?
  • 0
    Так рада, что сработало для вас. Не уверен, что понимаю ваш дополнительный вопрос. Не могли бы вы предоставить более подробную информацию?
0

Я предполагаю, что #edit-lines - первый выбор, так почему вы меняете значение второго?
Кроме того, первое условие в выражении if неверно. Он всегда будет возвращать TRUE, поскольку вы сравниваете строки с числами (номер 13 передается как аргумент indexOf).
Вам не нужно использовать .indexOf(). Просто сравните значения.

Вот пример:

$('#edit-lines, #edit-trading-options').change(function () {
    if ($('#edit-lines').val() == 13 && $('#edit-trading-options').val() == 14)
        $('#edit-lines').val('All');
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню