Ниже опции, которые я имею в своем 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;
}
Вы можете проверить вот так, если ничто
не будет первым (обычно так и в моем опыте):
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 = "Требуется тема!";
сотрет ваш
:)
Это должно сделать это:
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.........
}
document.getElementsByTagName ('option')
дает коллекцию всех элементов option
в документе и " ничего "
- это строка. Сравнивать коллекцию со строкой совершенно бесполезно.
Также установка document.getElementById ("subn"). InnerHTML = "Требуется тема!";
удалит элемент select
, поэтому document.getElementById (" subs ")
больше ничего не найдет.
Если вам просто нужно знать, выбрано ли что-нибудь, проверьте свойство selectedIndex
элемента select
:
if (document.getElementById("subs").selectedIndex <= 0) {
// nothing is selected
}
РЕДАКТИРОВАТЬ: Изменено > 0
на <= 0
. Я предполагаю, что это должно быть проверено, если пользователь тоже ничего не выбрал.