2011-03-25 159 views
0

我有两个复选框名称check1和check2。如果其他人被检查,我希望任一人被禁用。这是我做的:这段JavaScript代码有什么问题?

var male = document.getElementById("check1"); 
var female = document.getElementById("check2"); 

male.disabled = (female.checked == true) ? true : false; 
female.disabled = (male.checked == true) ? true : false; 

它根本不起作用。语法是否正确。我做错了什么?

+0

您是否收到任何错误? – 2011-03-25 00:54:45

+0

你可以用http://jslint.com/检查javascript语法错误。它有一个轻微的学习曲线,但它非常有用。 – 2011-03-25 00:55:50

+0

@havok,在这种特殊情况下这有什么用处? – James 2011-03-25 00:56:54

回答

3

您需要onchange事件,您的代码可以收拾以及。

var male = document.getElementById("check1"), 
    female = document.getElementById("check2"); 

male.onchange = function() { 
    female.disabled = male.checked; 
}; 

female.onchange = function() { 
    male.disabled = female.checked; 
}; 

jsFiddle

另外,你不应该使用无线电输入?

+0

您需要删除功能后多余的右括号。这里是一个使用jQuery的工作示例:http://jsfiddle.net/billymoon/wAukf/ – 2011-03-25 01:00:51

+0

@比利之路在你之前:D – alex 2011-03-25 01:03:20

0

disabled不应该以被禁用AFAIK所有设定,任意值是“truthy”

.removeAttribute('disabled')不拥有它禁用。

0

你需要改变其他复选框的状态,当点击一个复选框,例如。男性改变 - 改变女性,反之亦然。

function maleOnClick(){ 
    female.checked= !this.checked; 
} 
function femaleOnClick(){ 
    male.checked= !this.checked; 
} 

反正你为什么不使用type="radio"

0

尝试:

male.setAttribute('disabled', 'disabled'); //set 
male.setAttribute('disabled', ''); //clear 

所以:

male.setAttribute = (female.checked == true) ? 'disabled': '';