1

ユーザーがテキストボックスに何かを入力するとすぐにチェックボックスをチェックする次のコードがあります。これは、単一のテキスト ボックスでは問題なく機能します。

function activateCheckbox() {
        if (document.myForm.box1.checked == false) {
            document.myForm.box1.checked = true;
        }
    }
    <tr>
        <td><input type="text" id="mySearch1" name="mySearch1" size="40" onkeypress="activateCheckbox()"/></td>
        <td><input type="checkBox" id="box1" name="box1"/></td>
    </tr>

ただし、それぞれに対してチェックボックスがある複数のテキスト ボックスがあり、対応するチェックボックスのみをチェックする必要があるとします。関数にパラメーターを渡すことで上記のコードを次のように変更しましたが、「id」の代わりにチェックボックス名を受け入れるため、「document.myForm.id.checked」が機能しないため、機能しません。より良い代替案があるかどうか、またはコードを変更して機能させるにはどうすればよいかを提案してください。

function activateCheckbox(id) {
        if (document.myForm.id.checked == false) {
            document.myForm.id.checked = true;
        }
    }
    <tr>
        <td><input type="text" id="mySearch1" name="mySearch1" size="40" onkeypress="activateCheckbox('box1')"/></td>
        <td><input type="checkBox" id="box1" name="box1"/></td>
    </tr>
    <tr>
        <td><input type="text" id="mySearch2" name="mySearch2" size="40" onkeypress="activateCheckbox('box2')"/></td>
        <td><input type="checkBox" id="box2" name="box2"/></td>
    </tr>
    <tr>
        <td><input type="text" id="mySearch3" name="mySearch3" size="40" onkeypress="activateCheckbox('box3')"/></td>
        <td><input type="checkBox" id="box3" name="box3"/></td>
    </tr>
4

3 に答える 3

4

いくつかのオプションがあります。できるよ:

function activateCheckbox(id) {
    if (document.myForm[id].checked == false) {
        document.myForm[id].checked = true;
    }
}

...または個人的には、これはもう少し明確だと思います:

function activateCheckbox(id) {
    var checkbox = document.getElementById(id);
    if (! checkbox.checked) {
        checkbox.checked = true;
    }
}

最初のアプローチが機能するのは、JavaScriptobj.somePropertyでは が意味的に と同じことを意味するためobj["someProperty"]です。したがって、アクセスしたいプロパティの名前を格納する変数があれば、いつでもobj[name]そのプロパティにアクセスできます。

2 番目のアプローチは、その .xml によって DOM 内のチェックボックスを見つけるだけidです。idとにかく各チェックボックスを設定していて、変数を「id」と呼んでいるので、私にはきれいに思えます。

ifまた、あなたの発言は不要であることに注意してください。checked属性は常にtrueorになります(false他のものをそこに格納することでこれを覆すことができますが、それは完全に別のトピックです)。そのため、trueいつでも true に設定することはfalse、常に true に設定することと論理的に同等であり、次のように 1 行でハンドラー関数を実装できます。

function activateCheckbox(id) {
    document.getElementById(id).checked = true;
}
于 2011-07-15T10:11:03.170 に答える
1

.id文字通りidプロパティを意味します。動的に設定する場合は、次の[]表記を使用します。

function activateCheckbox(id) {
        if (document.myForm[id].checked == false) {
            document.myForm[id].checked = true;
        }
    }

['test']手段.test['abc']手段.abc。つまり、値として持つ[id]プロパティにアクセスしidます。

于 2011-07-15T10:10:41.970 に答える
0

JQuery(www.jquery.com)を使用することをお勧めします。1つのコード行を追加する

<script src="http://code.jquery.com/jquery-1.6.2.min.js" type="text/javascript"></script> 

1行のコードを書くだけで問題の問題を解決できます。

$('#checkboxId').attr('checked','checked');

またはあなたはチェックすることができます

$('input[type="checkbox"]').attr('checked','checked');

またはアンケック

$('input[type="checkbox"]').attr('checked','');

ドキュメント内のすべてのチェックボックス

于 2011-07-15T10:21:03.360 に答える