Javascript mousedown事件侦听器中调用的Java脚本中的警报可防止单选按钮被选中
给定以下代码:Javascript mousedown事件侦听器中调用的Java脚本中的警报可防止单选按钮被选中,javascript,javascript-events,Javascript,Javascript Events,给定以下代码: var inputs = element.querySelectorAll('input[type=radio]'); for (var i = 0; i < inputs.length; ++i) { inputs[i].addEventListener('mousedown', function(e) { alert(1); console.log(this.checked); //
var inputs = element.querySelectorAll('input[type=radio]');
for (var i = 0; i < inputs.length; ++i) {
inputs[i].addEventListener('mousedown', function(e)
{
alert(1);
console.log(this.checked); // this.checked is always false here
if (!this.checked) {
some_code();
}
});
}
var inputs=element.querySelectorAll('input[type=radio]');
对于(变量i=0;i
alert()可以阻止单选按钮激活吗?如果没有它,它可以正常工作
jsiddle链接:您可以使用
单击事件来获得完美的输出。另外return
您的函数请尝试以下操作
var inputs = element.querySelectorAll('input[type=radio]');
for (var i = 0; i < inputs.length; ++i) {
inputs[i].addEventListener('click', function(e)
{
console.log(this.checked); // this.checked is always false here
if (!this.checked) {
some_code();
}
return;
});
}
var inputs=element.querySelectorAll('input[type=radio]');
对于(变量i=0;i
检查小提琴
希望这对您有所帮助您看到了这种行为,因为您已绑定了鼠标向下
事件。在出现mouseup
或单击事件之前,复选框不会更改状态
由于出现了警报,因此鼠标悬停
和单击
事件不会发生。删除它,您就可以了,或者绑定到单击或鼠标。欢迎使用。你可能会考虑添加一个链接到一个你能重现错误的网站——一个简单的方法就是使用,这样我们就可以看到具体的问题是什么。为什么你要在那里报警?代码在发布之前被简化了。mousedown事件中实际上有一个AJAX调用。那么在没有警报的情况下会发生同样的事情吗?(在哪个浏览器上?因为my Opera会检查你小提琴上的单选按钮。)你是否有可能阻止事件的默认操作?默认操作不会被阻止。我已经检查了Chrome 31和IE11中的行为。去掉alert()可以解决这个问题,但我想知道为什么会发生这种情况。这看起来更像是一个bug<代码>返回
应该与根本不返回任何内容相同,并且由于出现警报,函数还不能返回。你知道这里发生了什么吗?不幸的是,这不是我们的选择。这一点只是为了防止根据AJAX响应检查单选按钮。先前的mousedown
事件被alert
消息停止。另外,在删除警报
后,console将假
显示为值,因为在函数完成执行之前未对其进行检查。在第二次单击中,它显示True
。因此,在这种情况下,单击
事件是更好的选择。