【问题标题】:How to open a <select /> via label, ::before, or programatically?如何通过标签、::before 或以编程方式打开 <select />?
【发布时间】:2020-04-30 18:45:13
【问题描述】:

任何解决方案只需要在 WebKit 浏览器中工作。

互联网上充斥着使这项工作可行的尝试-有些人声称可以使其正常工作,有些人则声称无法做到。根据我的经验,建议的方法都没有奏效。这根本不可能吗?

假设我有一个像 &lt;select id="mySelect" /&gt; 这样的选择

我尝试过的事情:

  • select::before -- 添加到 DOM,但不渲染
  • &lt;label for="mySelect" /&gt; -- 点击/点击时什么都不做
  • document.querySelector('select').click() -- 什么都不做
  • The method from this answer (React-specific) -- 无法分配 click 处理程序或任何其他可以以编程方式打开 select 的处理程序

我什至对 jQuery 解决方案持开放态度,即使我们正在使用 React 并且我们将加载 jQuery 单独 以触发 select 打开。

在第三方选择组件上:目标是为用户触发移动操作系统的原生选择控件,所以像 React-Select 这样的东西并不适合。

【问题讨论】:

标签: javascript html jquery css dom


【解决方案1】:

从这里更新的肮脏解决方案 (https://stackoverflow.com/a/249219/3684265)

var _select = document.getElementById("test");

_select.addEventListener("mouseout",function(){
  this.size = 1;
});

_select.addEventListener("mouseover",function(){
  this.size = 4;//set to show the number that you want
});
<select id="test">
  <option value="1">1</option>
  <option value="1">2</option>
  <option value="1">3</option>
  <option value="1">4</option>
  <option value="1">5</option>
  <option value="1">6</option>
</select>

【讨论】:

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