检查下拉列表的选定选项是不是第一个使用JavaScript的选项

时间:2010-04-20 14:01:57

标签: javascript html html-select

以下是我在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 个答案:

答案 0 :(得分:11)

如果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 :(得分:1)

这应该这样做:

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.........
}

答案 2 :(得分:0)

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。我认为应该检查用户是否也没有选择任何东西。