2

チェックボックスに基づいて複数の入力を無効または有効にしようとしています。それを行う関数を作成しましたが、関数を複数回呼び出すと。最後に呼び出された関数のみが変更されます。

デモ http://jsfiddle.net/SM8Nx/1/

html

<input type="checkbox" name="state" id="state"><br>

First name: <input type="text" name="fname" id="fnamex"><br>
Middle name: <input type="text" name="mname" id="mnamex"><br>
Last name: <input type="text" name="lname" id="lnamex"><br>

js

function disable(action, affected) {
    if (document.getElementById(action).checked === false) {
        document.getElementById(affected).disabled = true;
    }

    document.getElementById(action).onclick = function () {
        if (document.getElementById(action).checked === true) {
            document.getElementById(affected).disabled = false;
        } else {
            document.getElementById(affected).disabled = true;
        }
    };
}


disable("state", "fnamex");
disable("state", "lnamex");
4

4 に答える 4

0

addEventListenerイベントを DOM 要素に添付するために使用します。

document.getElementById(action).addEventListener('click', function () {
        if (document.getElementById(action).checked === true) {
            document.getElementById(affected).disabled = false;
        } else {
            document.getElementById(affected).disabled = true;
        }
    });

注: IE との互換性のために、attachEvent. https://developer.mozilla.org/en-US/docs/DOM/EventTarget.addEventListener#Compatibility

于 2013-04-09T18:15:46.783 に答える