无法通过javascript选中复选框

Unable to check a checkbox via javascript

本文关键字:复选框 javascript      更新时间:2023-09-26

我在页面上有一个表单,带有一个复选框输入字段。页面上还有一个表,其中有一列具有true/false值。表中的每一行都有一个带有id="selectedReviewTypeYear"的复选框。还有一个带有id="getDataToEdit"的按钮。

单击getDataToEdit按钮时,javascript将检查是否选中任何id="selectedReviewTypeYear"框。如果选中一个框,则会打开一个div,其中包含基于所选行预填充的表单字段。如果未选中任何框,则div将保持隐藏状态。

我的问题是,当表数据为"true"时,复选框不会被选中

    $('#getDataToEdit').on('click', function (){
    $('#reviewTypeTable').find('tr').each(function (){
        var row = $(this);
        if (row.find('input[id="selectedReviewTypeYearID"]').is(':checked')){
            var idx = table.row(this).index();
            var vReviewName = document.getElementById("editReviewTypeYear-name");
            var vAllowMultiple = document.getElementById("allowMultiple");
            var vAllowMultipleSpan = document.getElementById("allowMultipleSpan");
            vReviewName.innerHTML = table.cell(idx, 2).data();
            if (table.cell(idx, 3).data() == "true"){
                $("#allowMultiple").prop("checked", true);
                vAllowMultipleSpan.innerHTML = table.cell(idx, 3).data();
            }
            else {
                $("#allowMultiple").prop("checked", false);
                vAllowMultipleSpan.innerHTML = table.cell(idx, 3).data();
            }
            showHide.style.visibility = 'visible';
        }
    })
});

出于测试目的,我在名为allowMultipleSpan的表单中添加了一个span元素。这只是为了让我看看javascript是否能够读取表字段中的数据。当我选择一行,然后单击按钮时,div会打开,vReviewName.innerHTMLallowMultipleSpan都正确填充。但是,如果数据为"true",则不会选中复选框。

我正在运行JQuery 2.1.1。到目前为止,我已经尝试使用以下脚本变体,结果都是一样的:

来自JQuery(1.6+)规范:

$("#allowMultiple").prop("checked", true);

来自jQuery(1.5-)规范:

$("#allowMultiple").attr("checked", true);

根据Javascript规范:

document.getElementById("allowMultiple").checked = true;

这是我的表单的HTML:

<div class="widget-header"><h3>Edit: <span id="editReviewTypeYear-name" style="color: blue"></span></h3></div>
                <div class="widget-content">
                    <form id="editReviewTypeYear-form" class="form-horizontal" url="submitReviewTypeYear.htm">
                        <div class="form-group">
                            <label class="col-sm-2 control-label">Allow Multiple: </label>
                            <div class="col-sm-10">
                                <input type="checkbox" id="allowMultiple" name="allowMultiple" />
                                <span id="allowMultipleSpan" style="color: blue"></span>
                            </div>
                        </div>
                        <div class="form-actions">
                            <button id="submitReviewTypeYear" type="submit">Save</button>
                            <button class="btn btn-small btn-warning reg-cancel" id="submitReviewTypeYear-cancel" type="button" name="Cancel" value="cancel">Cancel</button>
                        </div>
                    </form>
                </div>

您尝试过if (table.cell(idx, 3).data() == true)吗?

您总是得到false条件,因为您将布尔值与字符串形式的"true"进行比较。