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

Хорошо, я понимаю, как я могу проверить индекс после его активации и выбора элемента. Но как я могу определить, что коробка не была затронута и ни один элемент не выбран?

Спасибо.

1
jim 12 Июн 2010 в 18:58

4 ответа

Лучший ответ

В этом случае select.options.selectedIndex будет равен -1.

0
Robusto 12 Июн 2010 в 14:59
I don't think there's a native method, but you can add an event listener to call a function when the select is changed:

function addEvent(elm, evType, fn, useCapture) {
    if (elm.addEventListener) {
        elm.addEventListener(evType, fn, useCapture);
        return true;
    }
    else if (elm.attachEvent) {
        var r = elm.attachEvent('on' + evType, fn);
        return r;
    }
    else {
        elm['on' + evType] = fn;
    }
}
hasBeenTouched = false;
addEvent(selectEl, 'change', function() {
    hasBeenTouched = true;
});
0
David Snabel-Caunt 12 Июн 2010 в 15:04

После загрузки документа (наивно window.onload) вручную установите в раскрывающемся списке selectedIndex значение -1 (как уже отмечали другие, по умолчанию в противном случае выбирается первый элемент).

window.onload = function() {
    document.getElementById('ddlId').selectedIndex = -1;
};

Пользователь не может установить в раскрывающемся списке невыбранный через интерфейс браузера, поэтому вы можете быть уверены, что он не установлен и не тронут, проверив, является ли selectedIndex по-прежнему -1 в любой момент после первоначальной настройки.

0
Stephen Swensen 12 Июн 2010 в 15:23

Похоже, вы хотите убедиться, что пользователь выбрал опцию, а не просто отправил форму с опцией по умолчанию. Эта ситуация обычно достигается с помощью параметра «метка» (иногда пустого, чтобы уменьшить размер) в раскрывающемся списке, который выбран по умолчанию, с последующей проверкой проверки, чтобы увидеть, был ли выбран другой параметр:

<select>
  <option>-- Please choose an option -- </option>
  <option value="1">Option 1</option>
  <option value="2">Option 2</option>
</select>

Правильно используя проверку (как на стороне сервера, так и на стороне клиента), вы можете реализовать решение , которое не использует Javascript для проверки правильности выбора параметра.

0
Andy E 12 Июн 2010 в 15:17