Как проверить, выбраны ли два конкретных параметра из двух разных полей выбора - PullRequest
0 голосов
/ 27 февраля 2019

Идея в том, что есть какой-то тест с двумя полями выбора.Поэтому нужно выбрать один из вариантов в каждом из следующих полей выбора.Только один вариант в каждом поле выбора является правильным, другие - неправильным.

Нажав кнопку, вы должны увидеть alert, были ли их ответы правильными или неправильными.

Цикл фактически получает все поля выбора на странице, но код не хочет работать.

Как проверить с помощью одной кнопки, являются ли два конкретных параметра из двух разных полей выборавыбрано?

function check() {
  var rt = $(document).find('select');
  var count = rt.length;

  for (i = 0; i < count; i++) {
    $(rt[i]).change(function() {
      var val = $(this).children("option:selected").val();
      var right = $(this).children("option:selected").data('accept');
      if (val === right) {
        alert('right')
      } else {
        alert('wrong')
      }
    });
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="country" id="first">
  <option>-</option>
  <option>United States</option>
  <option data-accept="India" value="right">India</option>
  <option>United Kingdom</option>
  <option>Russia</option>
</select>

<select class="country" id="second">
  <option>-</option>
  <option data-accept="United States" value="right">United States</option>
  <option>India</option>
  <option>United Kingdom</option>
  <option>Russia</option>
</select>

<button type="button" onclick="check()">check</button>

1 Ответ

0 голосов
/ 27 февраля 2019

Вам не нужно зацикливаться на каждом выборе страницы.Вот код, который работает:

function check() {
  if (isSelectRight("#first") && isSelectRight("#second")) {
    alert("right");
  } else {
    alert("wrong");
  }
}

function isSelectRight(selectId) {
  const selected = $(selectId + " option:selected");
  return selected.attr("value") === "right";
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="country" id="first">
  <option>-</option>
  <option>United States</option>
  <option data-accept="India" value="right">India</option>
  <option>United Kingdom</option>
  <option>Russia</option>
</select>

<select class="country" id="second">
  <option>-</option>
  <option data-accept="United States" value="right">United States</option>
  <option>India</option>
  <option>United Kingdom</option>
  <option>Russia</option>
</select>

<button type="button" onclick="check()">check</button>

По сути, у вас есть функция selectisRight, которая проверяет, является ли выбранное значение переданного selectId правильным, на основании атрибута valueопция.

Вы можете использовать ее на каждом select, который вы хотите.

...