0

やあ、

チェックボックスをチェック/チェック解除するときに、同じクラスのすべてのチェックボックスをチェック/チェック解除し、関連するテキストフィールドを無効/有効にしたい。

document.activeElementを使用してコードを書くdocument.getElementsByClassNameことができましたが、Chromeでは機能しないことを除いて、まさにそれを行います。ActiveElement がテキスト フィールドでない限り、実際の activeElement ではなく body を返すことがChrome で報告されているバグです。

バグが修正されるまで使用できる回避策はありますか?

私のコード:

JS:

function changeAll(variable) {
    var current = document.activeElement;
    var checkboxes = variable + "_g";
    var text = variable + "_v";
    var i;
    if (current.checked === true) {
        for (i = 0; i < document.getElementsByClassName(checkboxes).length; i++) {
            document.getElementsByClassName(checkboxes)[i].checked = true;
        }
        for (i = 0; i < document.getElementsByClassName(text).length; i++) {
            document.getElementsByClassName(text)[i].disabled = false;
        }
    } else {
        for (i = 0; i < document.getElementsByClassName(checkboxes).length; i++) {
            document.getElementsByClassName(checkboxes)[i].checked = false;
        }
        for (i = 0; i < document.getElementsByClassName(text).length; i++) {
            document.getElementsByClassName(text)[i].disabled = true;
        }
    }
}

HTML:

<input type="checkbox" class="y_g" onClick="changeAll('y')">
<input type="text" class="y_v" disabled>
<input type="checkbox" class="y_g" onClick="changeAll('y')">
<input type="text" class="y_v" disabled>
<br>
<input type="checkbox" class="x_g" onClick="changeAll('x')">
<input type="text" class="x_v" disabled>
<input type="checkbox" class="x_g" onClick="changeAll('x')">
<input type="text" class="x_v" disabled>
4

1 に答える 1

1

リファレンスを渡す

HTML:

<input type="checkbox" class="y_g" onClick="changeAll(this,'y')">

JavaScript:

function changeAll(current, variable) {
    //var current = document.activeElement;

インライン イベントを使用しないことが理想的です。

于 2013-05-03T11:30:49.560 に答える