【问题标题】:Check if dropdown's selected option is not the first with JavaScript检查下拉列表的选定选项是否不是 JavaScript 的第一个选项
【发布时间】:2010-04-20 14:01:56
【问题描述】:

以下是我的 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;
}

【问题讨论】:

    标签: javascript html html-select


    【解决方案1】:

    如果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!"; 将删除你的&lt;select&gt; :)

    【讨论】:

    • 你写了document.getElementsByTagName('subs'),你的意思是document.getElementById('subs')
    【解决方案2】:

    应该这样做:

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

    【讨论】:

      【解决方案3】:

      document.getElementsByTagName('option') 给出了文档中所有option 元素的集合,"nothing" 是一个字符串。将集合与字符串进行比较是毫无用处的。

      同时设置document.getElementById("subn").innerHTML = "Subject is Required!"; 将删除select 元素,因此document.getElementById("subs") 不会再找到任何东西。

      如果您只需要知道是否选择了任何内容,请检查 select 元素的 selectedIndex 属性:

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

      编辑:&gt; 0 更改为 &lt;= 0。我认为如果用户也没有选择任何东西,也应该检查它。

      【讨论】:

      • 你的if() 是倒退的,如果是&gt; 0 没有选择not,他想要反向检查。
      • 好吧,他在文本中写道“如果用户选择了第一个以外的主题”,但在他的示例中,他试图检查是否选择了第一个,所以有一点矛盾。
      • 他正在添加一条消息如果他们没有选择任何内容,它是倒退的。这从他的代码中非常很清楚,我不确定混乱在哪里......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多