我有一个选择元素,带有onChange事件,当我点击选择框并在其中选择新值时,该事件确实会触发。但是,当我通过Tab键到达选择框并按上下箭头更改选择框的值时,该事件不会触发。
我正在使用jQuery().change(function(){ ... });
来设置事件。
我有一个选择元素,带有onChange事件,当我点击选择框并在其中选择新值时,该事件确实会触发。但是,当我通过Tab键到达选择框并按上下箭头更改选择框的值时,该事件不会触发。
我正在使用jQuery().change(function(){ ... });
来设置事件。
<select>
元素上按 Tab 键时,只有在按下 Enter 键后才会触发更改事件。bindWithDelay
jQuery 插件,在延迟后的 keyup 事件上进行更改。 - RyanScottLewis正如其他人所述,更改事件要等到模糊事件才会发生。您需要监视keyup以及使用箭头键更改值的情况。
监视keyup和change事件,
$('select').bind('change keyup', function() {
// Handle
});
select
上通过 keyup
触发 blur
事件,然后再将焦点设置回去,这将触发变更:$('select').keyup(function(){
$(this).blur().focus();
});
$('select').keyup(function(){
$(this).trigger("change");
});
- Michael对于onChange()
事件触发,值必须被改变并且input
必须被blur()
(焦点移开);这就是为什么它在第一个案例中触发,但在第二个案例中没有触发的原因。
当元素的值发生改变时,会向该元素发送更改事件。此事件仅限于
<input>
元素、<textarea>
框和<select>
元素。对于选择框、复选框和单选按钮,当用户使用鼠标进行选择时,事件会立即触发,但对于其他元素类型,事件会延迟到元素失去焦点时才触发。
参考: