Javascript 如何在按键时选中复选框?

Javascript 如何在按键时选中复选框?,javascript,jsp,checkbox,onkeypress,Javascript,Jsp,Checkbox,Onkeypress,当用户在文本框中键入内容时,我有以下代码来选中复选框。这对于单个文本框很好 function activateCheckbox() { if (document.myForm.box1.checked == false) { document.myForm.box1.checked = true; } } <tr> <td><input type="text" id="mySea

当用户在文本框中键入内容时,我有以下代码来选中复选框。这对于单个文本框很好

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>
但是,假设有多个文本框,每个文本框对应一个复选框,我希望只选中相应的复选框。我通过向函数传递一个参数修改了上述代码,如下所示,但它不起作用,因为document.myForm.id.checked不起作用,因为它接受复选框名称而不是id。请建议是否有更好的替代方案,或者如何修改代码使其起作用

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>
.id字面上是指id属性。如果要动态设置,请使用[]符号:

function activateCheckbox(id) {
        if (document.myForm[id].checked == false) {
            document.myForm[id].checked = true;
        }
    }
['test']表示测试,['abc']表示.abc。所以[id]的意思是:访问id作为其值的属性。

.id的字面意思是id属性。如果要动态设置,请使用[]符号:

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

['test']表示测试,['abc']表示.abc。所以[id]的意思是:访问id作为其值的属性。

您有两个选项。你可以做:

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;
    }
}
第一种方法之所以有效,是因为在JavaScript中,obj.someProperty在语义上与obj[someProperty]的意思相同。因此,如果您有一个存储要访问的属性名称的变量,则始终可以执行obj[name]来访问该属性

第二种方法是通过其id在DOM中查找复选框。对我来说,这似乎更清晰,因为您正在设置每个复选框的id,并且调用了变量id

还要注意,if语句是多余的。checked属性只能是true或false。您可以通过在其中存储其他内容来颠覆它,但这是一个完全独立的主题。因此,无论何时将其设置为false在逻辑上等同于始终将其设置为true,并且您可以使用一行代码实现处理程序函数,如:

function activateCheckbox(id) {
    document.getElementById(id).checked = true;
}

你有两个选择。你可以做:

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;
    }
}
第一种方法之所以有效,是因为在JavaScript中,obj.someProperty在语义上与obj[someProperty]的意思相同。因此,如果您有一个存储要访问的属性名称的变量,则始终可以执行obj[name]来访问该属性

第二种方法是通过其id在DOM中查找复选框。对我来说,这似乎更清晰,因为您正在设置每个复选框的id,并且调用了变量id

还要注意,if语句是多余的。checked属性只能是true或false。您可以通过在其中存储其他内容来颠覆它,但这是一个完全独立的主题。因此,无论何时将其设置为false在逻辑上等同于始终将其设置为true,并且您可以使用一行代码实现处理程序函数,如:

function activateCheckbox(id) {
    document.getElementById(id).checked = true;
}

我建议您使用JQuery www.JQuery.com。通过添加一个代码行

<script src="http://code.jquery.com/jquery-1.6.2.min.js" type="text/javascript"></script> 
或者你可以查一下

$('input[type="checkbox"]').attr('checked','checked');
或者说是不开窍

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

文档中的所有复选框

我建议您使用JQuery www.JQuery.com。通过添加一个代码行

<script src="http://code.jquery.com/jquery-1.6.2.min.js" type="text/javascript"></script> 
或者你可以查一下

$('input[type="checkbox"]').attr('checked','checked');
或者说是不开窍

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

文档中的所有复选框

为什么不能为复选框的id和名称提供不同的名称?为什么不能为复选框的id和名称提供不同的名称?