无法使用jQuery更新复选框的已检查状态

时间:2012-05-10 14:53:19

标签: jquery forms

单击添加按钮我将使用最后一行的克隆添加新行,但如果已在最后一行检查过,则取消选中复选框。

请在http://jsfiddle.net/MMDZX/

上查看整个代码

6 个答案:

答案 0 :(得分:2)

将折线更改为:

jQuery("#dataTable tr:last").find("input[type='checkbox']").attr("checked", false);

两个问题:

  • 您正在搜索错误类型的输入元素(type=text而不是type=checkbox)。
  • 你正在使用一个字符串而不是布尔值来设置属性,如果你将它设置为选中状态就没问题,因为字符串是真的。

此外,.children().children()是不必要的。在这种情况下,.find()(或ancestor-descendant)更漂亮。

Demo.

答案 1 :(得分:1)

请在此处查看工作代码:http://jsfiddle.net/3rLqV/

将删除已检查状态行更改为:

jQuery("#dataTable tr:last input[type='checkbox']").removeAttr("checked");

您遇到的两个主要问题是type='text',而不是复选框,您无法将checked设置为false。它要么在那里。

答案 2 :(得分:0)

试试这个

 // to add new row
        jQuery("#addRow").click(function () {
            var jqasdasuery = jQuery("#dataTable tr:last").clone();
            jqasdasuery.find('input[type=checkbox]').attr("checked", false);
            jQuery("#dataTable").append(jqasdasuery);
            setAttributes();
        });

答案 3 :(得分:0)

添加

$(':checkbox',jqasdasuery).attr('checked', false);

克隆后。

答案 4 :(得分:0)

  $(document).ready(function () {
            $("#addRow").on('click', function () {
                var jqasdasuery = $("#dataTable tr:last").clone();

                $("#dataTable tbody").append(jqasdasuery);
                $("#dataTable tr:last").find(':checkbox').attr('checked', false);
                $("#dataTable tr:last").find('select option:first').attr('selected', true); 
                setAttributes();
            });

            $("#deleteRow").on('click', function () {
                if ($("#dataTable tr").length === $("#dataTable input:checked").length) {
                    alert("You cant delete all the rows")
                } else {
                    $("#dataTable").find(':checked').each(function () {
                        $(this).parents('tr').remove();
                    });
                }

                setAttributes();
            });
        });

        function setAttributes() {
            $("#dataTable tr").each(function (i) {
                $(this).find(":checkbox").attr("name", "chk" + i);
                $(this).find(":text").attr("name", "txt" + i);
                $(this).find("select").attr("name", "country" + i);
            });

            //$("#dataTable tr:last").find("input[type='text']").attr("checked", "false");
        };

答案 5 :(得分:0)

在克隆最后一行时删除复选框的已检查状态。

您可以添加以下行

jqasdasuery.find( “输入[类型= '复选框']”)ATTR( '检查',假);

var jqasdasuery = jQuery(“#dataTable tr:last”)。clone();

在“#addRow”中点击功能。