2012-11-27 31 views
2

我知道我可以使用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 

有沒有人有辦法解決嗎?

感謝

[編輯] 了很多非常有用的..幫助後。這裏是我的解決方案時,有對的一個輸入的變化事件觸發:在你的例子你是比較defaultCheckeddefaultChecked財產

$('#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 
    } 

}); 
+0

僅供參考,你並不需要在JavaScript中 – lostsource

+0

也FYI一個$前綴的變量:其共同的前綴* jQuery的對象*用'$'來區分他們,但不正常的變量,比如布爾變量或字符串等等。 – Jamiec

+0

感謝Jamiec,我通常在'$'前面加上jQuery對象變量的前綴,不知道爲什麼將它添加到這個var ... – Zander

回答

2

。您應該比較defaultCheckedchecked屬性。

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