0

给定以下代码:

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();
            }
        });
    }

alert() 可以防止单选按钮变为活动状态吗?没有它,它可以按预期工作。

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

4

2 回答 2

1

您看到此行为是因为您已绑定该mousedown事件。mouseup在有orclick事件之前,复选框不会改变状态。

和事件不会发生,mouseup因为. 删除它,你就很好了,或者绑定或者相反。clickalertclickmouseup

于 2013-11-13T13:04:07.947 回答
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/

希望这可以帮助

于 2013-11-13T13:01:09.910 回答