Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mousedown事件侦听器中调用的Java脚本中的警报可防止单选按钮被选中_Javascript_Javascript Events - Fatal编程技术网

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
。因此,在这种情况下,
单击
事件是更好的选择。