我有一个输入表单,允许我从多个选项中进行选择,并在用户更改选择时执行某些操作。例如,
<select onChange="javascript:doSomething();">
<option>A</option>
<option>B</option>
<option>C</option>
</select>现在,只有在选择发生变化时才会触发doSomething()。
我想在用户选择任何选项时触发doSomething(),可能再次选择相同的选项。
我尝试过使用"onClick“处理程序,但在用户开始选择过程之前就触发了。
那么,有没有办法在用户每次选择时都触发一个函数呢?
更新:
Darryl提出的答案似乎是有效的,但并不总是有效的。有时,只要用户单击下拉菜单,事件就会被触发,甚至在用户完成选择过程之前!
发布于 2011-10-22 16:28:12
下面是最简单的方法:
<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>鼠标选择和键盘向上/向下键都适用于选择时的焦点。
发布于 2012-09-13 18:46:46
我需要一些完全一样的东西。这是对我有效的方法:
<select onchange="doSomething();" onfocus="this.selectedIndex = -1;">
<option>A</option>
<option>B</option>
<option>C</option>
</select>支持这一点:
当用户选择任何选项时,可能会再次选择相同的选项
发布于 2012-02-03 00:33:59
几个月前,当我创建一个设计时,我也遇到了同样的问题。我找到的解决方案是在您正在使用的元素上结合使用.live("change", function())和.blur()。
如果您想让它在用户简单地单击时执行某些操作,而不是更改,只需用click替换change即可。
我为我的dropdown分配了一个ID selected,并使用了以下内容:
$(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/)
https://stackoverflow.com/questions/647282
复制相似问题