2011-03-25 156 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': '';