我想用 AJAX 调用的值动态加载一个 select,并允许用户在加载后选择列表中的第一个项目,在它获得焦点后,现在,第一个项目是选中的项目,当您单击下拉列表并单击第一个项目时,没有任何反应。我无法添加任何不是有效选择的占位符项目。
当当前选择的选项被重新选择/未更改时,如何在 jQuery 中触发 .change 事件?
鉴于以下情况:
<select id="myoptions">
<option id="one" >Option 1</option>
<option id="two">Option 2</option>
</select>
假设选择了选项 one,然后我单击下拉菜单并再次选择 one,会触发什么事件?
$('#myoptions').change(function() {
alert('You selected something!');
}
如果我选择不同的东西,上面的代码可以工作,但如果我选择当前选择的选项,则没有任何反应。
换句话说:
如果我点击下拉菜单并“选择”当前选择的选项,我该如何触发事件?
所有这些关于trigger 的建议都不是解决方案,我需要在我用鼠标单击Option 1 时触发的东西 当 Option 1 已被选中时。
我尝试使用 .click 也没有任何反应。
对于第一次选择下拉菜单,并且有人选择默认选择选项的用例,没有一个答案是有效的解决方案。没有任何反应。
focusout 不是解决方案,它不会发生,直到有人点击其他地方,这在游戏中为时已晚。
最佳答案
您可以使用点击事件或 focusout。 如果用户仅使用 tab + enter 等键盘,则单击事件将不起作用,但 focusout 将起作用。
编辑:
添加了一个演示:http://jsfiddle.net/fPRe7/ 即使您单击选定的项目,也可以单击。
$("#myoptions").on("click", function(){
console.debug("click");
});
$("#myoptions").on("change", function(){
console.debug("changed");
});
$("#myoptions").on("focusout", function(){
console.debug("focusout");
});
Chrome 只会获得 1 次点击(选择一个),但 FF 将获得 2 次点击,当您打开选择时点击一次,选择一个时点击一次。
关于javascript - How to receive an event when selected option is the already selected option of a dropdown?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16513638/