2011-11-28 111 views
0

我有n個複選框,如果我選中了一個複選框,它必須選中複選框的所有相似值,而其他複選框應該禁用。JavaScript禁用未選中的複選框

任何一個可以幫我解決這個問題

我有選擇的類似值選擇Java腳本

<script type='text/javascript'> 
(function() 
{ 
var allInps = document.getElementsByTagName('input'), allCb = []; 

for(var i in allInps) 
    if(allInps[ i ].type === 'checkbox') 
    { 
    allCb.push(allInps[ i ]); 
    allInps[ i ].onclick = likeMe; 
    } 

function likeMe() 
{ 
    for(var i in allCb) 
    if(allCb[ i ] !== this && allCb[ i ].value === this.value) 
    allCb[ i ].checked = this.checked; 
} 

})(); 
</script> 

請幫幫忙!不需要

回答

0

這些行: (函數() { 和這一行: })();

要禁用複選框,checkbox.disabled = true; (其中複選框是要禁用的元素)

在您的likeMe函數中,添加一個else語句,如果它們不相似,則禁用該複選框。

我認爲這應該工作。這裏是你的代碼應該如何:

<script type='text/javascript'> 
(function() 
{ 
var allInps = document.getElementsByTagName('input'), allCb = []; 

for(var i in allInps) 
    if(allInps[ i ].type === 'checkbox') 
    { 
    allCb.push(allInps[ i ]); 
    allInps[ i ].onclick = likeMe; 
    } 

function likeMe() 
{ 
    for(var i in allCb) 
    if(allCb[ i ] !== this && allCb[ i ].id === this.id) 
    allCb[ i ].checked = this.checked; 
    else if (allCb[ i ].checked !== this.checked && allCb[ i ].id !== this.id) 
    { 
    allCb[ i ].setAttribute('disabled',true); 
    } 
    else { 
    allCb[ i ].removeAttribute('disabled'); 
    } 
} 

})(); 

我認爲它會解決它。