【问题标题】:JS/Jquery: how to check whether dropdown has selected values?JS/Jquery:如何检查下拉菜单是否有选择的值?
【发布时间】:2015-02-20 15:17:49
【问题描述】:

我已经用谷歌搜索并尝试了多种方法来做到这一点,但到目前为止没有一个对我有用。我正在寻找的内容非常简单:我希望能够判断下拉菜单是否具有选定的值。问题是 selectedIndex、:selected、val() 等在以下情况下会返回结果:

<select>
<option value="123">123</option>
<option value="234">234</option>
</select>

很明显,浏览器会显示这个下拉菜单,其中 123 选项被选中,但它只是因为没有其他选项而被选中,实际上这个下拉菜单没有选中值,因为没有“selected”属性。所以基本上我试图找到如何区分上面的下拉列表和这个

<select>
<option selected value="123">123</option>
<option value="234">234</option>
</select>

【问题讨论】:

    标签: javascript jquery drop-down-menu


    【解决方案1】:
    var hasValue = ($('select > [selected]').length > 0);
    

    或者,

    var hasValue = $('select').has('[selected]');
    

    【讨论】:

      【解决方案2】:

      快速解决方案:

      <select>
      <option selected></option>
      <option value="123">123</option>
      <option value="234">234</option>
      </select>
      

      那看看你有没有.val()

      【讨论】:

      • 虽然这可行,但它不是解决方案,而是一种解决方法:) 不幸的是,我正在处理一个已经存在的应用程序,其中没有第一个空元素
      • @Eugene - 哦,嘘! $('select option').first().before("&lt;option selected&gt;&lt;/option&gt;"); ?哈哈。
      【解决方案3】:

      批准的答案似乎对我不起作用。

      这是我如何检查是否选择了所有选择选项:

      if($('select option:selected').length > 0) {
      /* Do your stuff here */
      }
      

      【讨论】:

        【解决方案4】:

        据我所知,您的两个示例在功能上没有区别。本质上,浏览器会自动选择第一个option

        例如,查看

        的结果
        $('option:selected')
        

        关于你的第一个例子。

        如果您真的想防止这种情况发生,您有两种选择。根据 Jason 的回答,第一个是在 select 中引入一个新的空元素。另一个选项是取消选择自动选择的值:

        $(document).load(function(){
            $('option:selected').attr('selected', false);
        });
        

        这会清除选择。因此,$('select').val() 的任何不是空字符串的结果都将由用户进行更改。

        【讨论】:

          猜你喜欢
          • 2018-05-09
          • 2020-08-11
          • 1970-01-01
          • 1970-01-01
          • 2016-04-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-04
          相关资源
          最近更新 更多