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>

但是,假设有多个文本框,每个文本框都有一个复选框,我希望只选中相应的复选框。我通过将参数传递给函数来修改上面的代码,如下所示,但它不起作用,因为“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>
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]访问该属性。

第二种方法只是在 DOM 中通过id. 对我来说这似乎更干净,因为您id无论如何都在设置每个复选框,并且因为您将变量称为“id”。

另请注意,您的if陈述是多余的。该checked属性只会是trueor false(您可以通过在其中存储其他内容来颠覆它,但这是一个完全独立的主题)。因此,将其设置为true任何时候在false逻辑上等同于始终将其设置为 true,并且您可以用一行代码实现处理程序函数,例如:

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)。通过添加一行代码

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

您只需编写一行代码即可解决您的问题:

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

或者你可以检查

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

或取消检查

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

您文档中的所有复选框

于 2011-07-15T10:21:03.360 回答