您可以在此处查看:https://jsfiddle.net/vt0u2ddk/
var items = document.getElementsByTagName('input');
for (var i = 0; i < items.length; i++) {
items[i].onclick = function(e) {
alert('clicked');
console.log('clicked', e.target.value);
};
}
<div id="text">
<input name="auto" value="foo" type="radio" checked>foo</label>
<input name="auto" value="bar" type="radio">bar</label>
<input name="auto" value="ming" type="radio">ming</label>
</div>
如果首先单击单选按钮(而不是标签),则会收到单击事件的警报。如果您随后使用箭头键切换单选按钮的选择,则每次触发单击事件时。为什么?我使用的是键盘而不是鼠标。是否有解释和/或解决方法?
答案 0 :(得分:1)
我建议改为使用mouseup
事件。 click
事件认为切换单选按钮是左键单击(出于某种原因,通过选中e.button
来验证这一点),但mouseup
正确识别两者之间的差异,并且在使用键盘。我的测试似乎验证mouseup
是否正确识别出触摸事件也引发了手指,但我不是100%就此而言。
var items = document.getElementsByTagName('input');
for (var i = 0; i < items.length; i++) {
items[i].onmouseup = function(e) {
alert('clicked: ' + e.button);
console.log('clicked', e.target.value);
};
}
&#13;
<div id="text">
<input name="auto" value="foo" type="radio" checked>foo</label>
<input name="auto" value="bar" type="radio">bar</label>
<input name="auto" value="ming" type="radio">ming</label>
</div>
&#13;