【问题标题】:Is it possible to trigger JavaScript when a user selects the current option in an HTML select?当用户在 HTML 选择中选择当前选项时,是否可以触发 JavaScript?
【发布时间】:2014-01-24 01:43:19
【问题描述】:

我知道你可以使用 select 上的 onchange 事件来触发 JavaScript 函数,但是如果他们选择了当前选中的选项呢?

这样做的原因是我想要一个包含一堆网站的下拉列表。如果您愿意,这可以用作一种跳转页面。当用户选择一个站点时,所选站点会在新窗口中打开。现在,如果他们关闭新选项卡/窗口,则选择是他们选择的最后一个选项。如果用户想再次访问同一个网站,onchange 事件不会触发。

我知道您可以将 select 选项改回默认选项,并使用 null 值,如下所示:

html

<select onChange="jsFunction(this.value)" id="selectOpt">
    <option value="">1</option>
    <option value="websiteURL2">2</option>
    <option value="websiteURL3">3</option>
</select>

javascript

function jsFunction(opt){
    window.location = opt;
    document.getElementById("selectOpt").options[0].selected = true;
}

http://jsfiddle.net/XqLmY/1/

但我想知道是否可以不这样做。

我可以使用 HTML 选择触发事件而不更改其值吗?

【问题讨论】:

  • 您所描述的内容不应使用 &lt;select&gt; 元素,因为这是不合适的。相反,您应该使用链接列表并为其设置样式。这样,无论用户是使用桌面设备还是移动设备,还是仅使用键盘的用户,它都能始终如一地执行。
  • 我真的不想要一个同时显示的链接列表,因为它是一个很长的列表。
  • 我从来没有说过你应该同时显示一个平面链接列表,我说你应该使用链接列表而不是&lt;select&gt;元素。您仍然可以设置列表样式并使用 javascript 来切换它的显示方式。
  • @zzzzBov 你能描述一下你在这里的建议吗?它是某种折叠列表吗?
  • @zzzzBov 我正在和 Luxelin 聊天,他建议使用引导下拉菜单; getbootstrap.com/components/#dropdowns。我认为这种解决方案也可能是您的建议,对吧?

标签: javascript html forms html-select


【解决方案1】:

如何改用 onClick 看这里http://jsfiddle.net/9X4Ks/1/

<select onclick="clickFunction(this)" id="selectOpt">
    <option value="websiteURL1">1</option>
    <option value="websiteURL2">2</option>
    <option value="websiteURL3">3</option>
</select>

function clickFunction(o){
    alert(o.value)
}

即使用户第二次单击所选选项,它也会触发。
不幸的是,它仅适用于 chrome 和 opera。 火狐不支持

【讨论】:

  • 每次我点击选择时都会触发事件,只允许我选择当前选项;即使在 Chrome 中。
【解决方案2】:

不是一个真正的答案,但我只是最终使用了这种方法,因为它很简单并且没有其他依赖项。

function jsFunction(opt){
    window.location = opt;
    document.getElementById("selectOpt").options[0].selected = true;
}

【讨论】:

    猜你喜欢
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多