复选框单击不同步-Jquery

时间:2011-07-25 21:09:08

标签: javascript jquery asp.net checkbox

我有一个带复选框和文本输入列的表。复选框列中的最后一行有一个"全部检查"链接。

选中全部点击:

1:文字必须更改"取消全部选中"

2:选中列中上方的框并设置textbox text = 500。

在"取消选中所有": 1:文字必须改变"全部检查" 2:取消选中该框并清除文本框。

但上面的第2点工作不正常。

步骤:

1:点击"全部检查" - 文本更改为"取消选中全部"并选中了框,但未将文本框设置为500。

2:点击"取消选中全部" - 文本更改为"全部检查"并取消选中框,但现在它将文本框设置为500。

我认为这是一些事件处理问题,但到目前为止我还没有想到它。

任何想法会发生什么?

注意:我将不得不使用" onclick"因为我的实际代码是.aspx页面,它没有用复选框识别onchange。

更新了代码 Sample

4 个答案:

答案 0 :(得分:1)

将'checked'更改为boolean并且没问题。

已更新 http://jsbin.com/inocud/16

课程方法 - http://jsbin.com/inocud/22

答案 1 :(得分:1)

onClick()和setValue()函数在click()对复选框应用检查之前运行; 因此,在步骤1,它没有看到复选框。

答案 2 :(得分:0)

试图开枪。

已更新(这是一个黑客但有效):http://jsfiddle.net/2YGYt/

另一种方法(非hacky方式):http://jsfiddle.net/2YGYt/3/

答案 3 :(得分:0)

试试这个

<script> 
 $(function () {
            $(".checkall").click(function () {


                if ($(this).text() == "Check All") {
                    $(this).text("Uncheck All");
                    $(this).parent().parent().prevUntil('tbody').each(function () {
                        $(this).find("td input:checkbox").attr('checked', 'checked').click();
                    });
                }
                else {
                    $(this).text("Check All");
                    $(this).parent().parent().prevUntil('tbody').each(function () {
                        $(this).find("td input:checkbox").removeAttr('checked').click();
                    });
                }
            });
        });
        function setValue(chb, txtid, valu) {
            if ($(chb).is(":checked")) {
                $("#" + txtid).val(valu);
            }
            else {
                $("#" + txtid).val("");
            }
        }

</script>