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またはclickイベントが発生するまで、チェックボックスの状態は変化しません。

mouseupとのclickイベントは、 のため発生しませんalert。それを削除すると、あなたは良いか、clickまたはmouseup代わりに拘束されます。

于 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 に答える