首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于超文本标记语言<select>,有没有onSelect事件或类似的东西?

对于超文本标记语言<select>,有没有onSelect事件或类似的东西?
EN

Stack Overflow用户
提问于 2009-03-15 12:13:48
回答 34查看 443.7K关注 0票数 241

我有一个输入表单,允许我从多个选项中进行选择,并在用户更改选择时执行某些操作。例如,

代码语言:javascript
复制
<select onChange="javascript:doSomething();">
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>

现在,只有在选择发生变化时才会触发doSomething()

我想在用户选择任何选项时触发doSomething(),可能再次选择相同的选项。

我尝试过使用"onClick“处理程序,但在用户开始选择过程之前就触发了。

那么,有没有办法在用户每次选择时都触发一个函数呢?

更新:

Darryl提出的答案似乎是有效的,但并不总是有效的。有时,只要用户单击下拉菜单,事件就会被触发,甚至在用户完成选择过程之前!

EN

回答 34

Stack Overflow用户

发布于 2011-10-22 16:28:12

下面是最简单的方法:

代码语言:javascript
复制
<select name="ab" onchange="if (this.selectedIndex) doSomething();">
    <option value="-1">--</option>
    <option value="1">option 1</option> 
    <option value="2">option 2</option>
    <option value="3">option 3</option>
</select>

鼠标选择和键盘向上/向下键都适用于选择时的焦点。

票数 90
EN

Stack Overflow用户

发布于 2012-09-13 18:46:46

我需要一些完全一样的东西。这是对我有效的方法:

代码语言:javascript
复制
<select onchange="doSomething();" onfocus="this.selectedIndex = -1;">
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>

支持这一点:

当用户选择任何选项时,可能会再次选择相同的选项

票数 80
EN

Stack Overflow用户

发布于 2012-02-03 00:33:59

几个月前,当我创建一个设计时,我也遇到了同样的问题。我找到的解决方案是在您正在使用的元素上结合使用.live("change", function()).blur()

如果您想让它在用户简单地单击时执行某些操作,而不是更改,只需用click替换change即可。

我为我的dropdown分配了一个ID selected,并使用了以下内容:

代码语言:javascript
复制
$(function () {
    $("#selected").live("change", function () {

    // do whatever you need to do

    // you want the element to lose focus immediately
    // this is key to get this working.
    $('#selected').blur();
    });
});

我发现这个问题没有选定的答案,所以我想我应该给出我的输入。这对我来说效果很好,所以希望其他人在遇到问题时也能使用这个代码。

http://api.jquery.com/live/

编辑:与 .live**.相反,请使用选择器参见 [jQuery .on()**](http://api.jquery.com/on/)

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/647282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档