Проверьте, не является ли выбранная опция выпадающего меню не первой в JavaScript - PullRequest
6 голосов
/ 20 апреля 2010

Ниже приведены параметры, которые у меня есть в моем HTML-коде:

    <label id="subn">
      <select name="subs" id="subs">
        <option value="nothing">Choose a Subject</option>
        <option value="General Question">General Question</option>
        <option value="MemberShip Area">MemberShip Area</option>
        <option value="Others">Others</option>
      </select>
    </label>

Я хочу создать код JavaScript, который будет проверять, выбрал ли пользователь параметр, отличный от первого.

Вот что я попробовал:

if (document.getElementsByTagName('option') == "nothing"){
    document.getElementById("subn").innerHTML = "Subject is Required!";
    document.getElementById("subs").focus();
    return false;
}

Ответы [ 3 ]

11 голосов
/ 20 апреля 2010

Вы можете проверить, как это, если nothing будет первым (обычно так по моему опыту):

if (document.getElementById('subs').selectedIndex == 0){

Чтобы все еще сравнивать, основываясь на значении, сделайте это:

var sel = document.getElementById('subs');
if (sel.options[sel.selectedIndex].value == 'nothing') {

Вы можете изменить свою разметку так, чтобы метка находилась рядом, например:

<select name="subs" id="subs"></select><label id="subn" for="subs"></label>

В противном случае эта часть: .innerHTML = "Subject is Required!"; сотрет <select>:)

1 голос
/ 20 апреля 2010

Это должно сделать это:

var index = document.your_form_name.subs.selectedIndex;
var value = document.your_form_name.subs.options[index].value;

if (value === "nothing"){
   // your further code here.........
}
0 голосов
/ 20 апреля 2010

document.getElementsByTagName('option') дает коллекцию всех option элементов в документе, а "nothing" является строкой. Сравнение коллекции со строкой совершенно бесполезно.

Также установка document.getElementById("subn").innerHTML = "Subject is Required!"; удалит элемент select, поэтому document.getElementById("subs") больше ничего не найдет.

Если вам просто нужно узнать, выбрано ли что-нибудь, проверьте свойство selectedIndex элемента select:

if (document.getElementById("subs").selectedIndex <= 0) {
  // nothing is selected
}

РЕДАКТИРОВАТЬ: Изменено > 0 на <= 0. Я предполагаю, что это следует проверить, если пользователь тоже ничего не выбирал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...