gpt4 book ai didi

Jquery 1.4 - 选择 - onchange 在没有点击的情况下被触发 - Firefox

转载 作者:行者123 更新时间:2023-11-28 03:31:35 26 4
gpt4 key购买 nike

我看到了非常奇怪的行为 - 在 Firefox 中,如果你有一个选择下拉菜单而没有选择任何项目,onchange 事件会触发 onblur - 即使你只是将焦点转移到页面上的另一个元素。我的选择只是一个普通的选择:

<select id="mySelect">
<option value="Value0">Value 0</option>
<option value="Value1">Value 1</option>
<option value="Value2">Value 2</option>
</select>

我的 js 是:

$("#mySelect").change(function(){
alert('Change event fired');
});

$("#mySelect").attr('selectedIndex', '-1');

请参阅此 jsfiddle:http://jsfiddle.net/W8QR4/

如果我没有实际点击了一个新选项(除了升级到更新版本的 jquery 之外),有什么方法可以防止 onchange 触发。我知道,我现在坚持使用它)?

change 事件在它不应该的时候触发。我知道代码本身确实有效。

复制步骤:

  1. 单击选择的小向下箭头
  2. 将鼠标悬停在值 1 或值 2 上,但不要选择它
  3. 点击other 输入 - 两次,因此焦点从选择中移除并传递给其他元素

这仅在下拉列表中选择任何项目之前有效。一旦做出选择,就不会发生这种情况

最佳答案

这是我想出的答案,欢迎评论/改进:

$("#mySelect").attr('selectedIndex', '-1');

//Capture the initial selection of each dropdown
$('select').each(function() {
$(this).data('initialSelection', String($(this).attr('selectedIndex')));
});

//Add click event to all options. When clicked, change initial selection and unbind the click event
$('select option').click(function() {
$(this).parent().data('initialSelection', '').attr('selectedIndex', this.index).find('option').unbind('click');
});

//Onchange, check if initial selection is still -1. (If there is a click it will be reset to '')
//Otherwise, it was just a hover - reset selected index to -1
$('select').change(function(e){
if($(this).data('initialSelection') == '-1'){
$(this).attr('selectedIndex', '-1');
}
});

关于Jquery 1.4 - 选择 - onchange 在没有点击的情况下被触发 - Firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17403991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com