复选框的状态看起来已更新,但实际上并未更新

时间:2012-10-05 08:25:45

标签: javascript jquery html

我有一个奇怪的问题。我正在为Magento开发一些东西。我添加了链接“选择所有类别”并添加一个jQuery事件来检查所有复选框,当我点击它。它运行良好,但不知何故html没有更新,Magento无法看到所有输入都被选中。但是当我手动点击一个复选框时,它会更新html(我正在查看控制台)并且Magento保存按钮工作正常。

如何解决此问题?我不知道我还应该做什么来执行更新html。它看起来像是有效的(选中复选框),但请看一下控制台和html。必须更新Html。

我创建了jsfiddle:here

5 个答案:

答案 0 :(得分:2)

试试这个:

.attr('checked', 'checked');

答案 1 :(得分:1)

只需选中所有复选框,例如this

您的is(':checked') IF语句似乎有误,因为它应该包含在.each()中,因此它适用于所有复选框,请在我链接的小提琴上尝试更简单的方法。

答案 2 :(得分:1)

您是否尝试prop('checked', true);而不是prop('checked', 'checked');? 这就是我在所有例子中看到的。

答案 3 :(得分:1)

我明白了。这是Magento的问题。 Magento不使用该表单,它使用隐藏的输入并收集选定的复选框。无论如何都会提升所有答案。感谢

答案 4 :(得分:1)

您可以使用以下内容:

// custom jQuery added
jQuery(function() {
    var to_check = false;       
    jQuery(".select-all-categories").click(function(){
        if (!to_check)
            to_check = true;
        else
            to_check = false;

        jQuery("#banner-categories input[type=checkbox]").each(function(){
            if (!to_check)      
                jQuery(this).removeAttr("checked");
            else  
                jQuery(this).attr("checked","checked");
        });          
        return false;
    });
});

可以优化代码