在mousedown事件侦听器中调用的Java Script中的警报会阻止单选按钮被检查

时间:2013-11-13 12:36:08

标签: 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); // this.checked is always false here

            if (!this.checked) {
                some_code();
            }
        });
    }

警告()是否可以阻止单选按钮变为活动状态?没有它就可以正常工作。

JSFiddle链接:http://jsfiddle.net/9UGZM/

2 个答案:

答案 0 :(得分:1)

你看到这种行为是因为你绑定了mousedown事件。在存在mouseupclick事件之前,该复选框不会更改状态。

由于mouseupclickalert事件未发生。删除它,你很好,或者绑定到clickmouseup

答案 1 :(得分:0)

您可以使用click事件获得完美输出。还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;
        });
    } 

检查小提琴http://jsfiddle.net/9UGZM/1/

希望这有帮助