【发布时间】:2015-05-23 20:17:27
【问题描述】:
由于表单的不同元素上的事件顺序(请参阅http://jsfiddle.net/fs7norbL/,底部的强制代码),我需要同时处理复选框的 onchange 和 onclick 事件。
我想知道复选框 onchange 和 onclick 事件是否由于相同的人工交互而发生。对于每次人类交互,我可能只处理其中一个(以先到者为准),但需要能够处理这两种事件类型。
event.timestamp 不会因为这个长期存在的开放 mozilla 错误:https://bugzilla.mozilla.org/show_bug.cgi?id=238041。 好像没有其他东西可以用了。
如何确定两个事件是否是由同一人机交互引起的。
<form>
<input type="checkbox"/>
$(':checkbox').click(function() {
console.log('checkbox click');
});
$(':checkbox').change(function() {
console.log('checkbox change');
});
$('form').change(function() {
console.log('form change');
});
【问题讨论】:
-
当用户点击复选框时,
onchange不会被触发吗?它会导致复选框更改其状态,因此会发生更改事件。我认为你是我的删除onlick听众。 -
@zmii
onchange不会在所有浏览器上针对键盘触发的更改(选择输入、按空格键)触发。onclick是唯一可靠触发所有可能的人类行为的事件,因此无法删除onclick。
标签: javascript jquery events onclick onchange