2011-11-28 120 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'); 
    } 
} 

})(); 

我认为它会解决它。