如何确定复选框是否与其初始检查状态不同

时间:2012-11-27 11:15:58

标签: javascript jquery

我知道我可以使用defaultChecked来确定复选框的初始状态是什么,但如何确定其中一个是否已从默认状态更改?

我需要设置一个变量,这样我就可以根据结果操作其他东西,这就是我现在所拥有的:

// This checks if a checkbox has changed from being initially checked
$isModified = $(this).find('input')[0].defaultChecked !== $(this).find('input').prop('checked') ? true : false

[编辑]我需要检查复选框是否已从默认状态更改,无论是否最初检查过。

这是我认为可行的(但不是):

$isModified = $this.find('input')[0].defaultChecked !== $this.find('input')[0].defaultChecked ? true : false

有没有人有解决方案?

由于

[编辑] 经过很多非常有帮助的帮助。这是我在其中一个输入上发生更改事件时触发的解决方案:

$('#input-parent').each(function(i) {
    var $this = $(this),
        isModified
    ;

    $this.find('input').each(function() {
        var $this = $(this);
        if ( !isModified) {
            isModified = $this[0].defaultChecked !== $this[0].checked;
        }
    });

    if ( isModified ) {
        // Do something
    } else {
        // Do something else
    }

});

1 个答案:

答案 0 :(得分:2)

在您的示例中,您要将defaultCheckeddefaultChecked属性进行比较。您应该比较defaultCheckedchecked属性。

$isModified = $this.find('input')[0].defaultChecked !== $this.find('input')[0].checked;