我有两个复选框字段。使用Javascript,我想确保只勾选一个复选框。 (例如,如果勾选了一个checkbox1,如果勾选了checkbox2,则复选框1将取消勾选)
<input name="fries" type="checkbox" disabled="disabled" id="opt1"/>
<input type="checkbox" name="fries" id="opt2" disabled="disabled"/>
我还希望在下方有一个单选按钮,如果单击此按钮,我希望两个复选框都未被取消。
<input type="radio" name="o1" id="hotdog" onchange="setFries();"/>
最好的方法是写一个函数,还是使用onclick语句?
答案 0 :(得分:10)
你应该使用单选按钮,但有些人喜欢复选框的外观,所以这应该照顾它。我在你的输入中添加了一个公共类:
function cbChange(obj) {
var cbs = document.getElementsByClassName("cb");
for (var i = 0; i < cbs.length; i++) {
cbs[i].checked = false;
}
obj.checked = true;
}
答案 1 :(得分:2)
同样基于上面的tymeJV答案,如果您只想在单击一个复选框时停用另一个复选框,您可以这样做:
function cbChange(obj) {
var instate=(obj.checked);
var cbs = document.getElementsByClassName("cb");
for (var i = 0; i < cbs.length; i++) {
cbs[i].checked = false;
}
if(instate)obj.checked = true;
}
tymeJV的功能不会让你两者都没有被攻击 - 这样做。 (是的,很奇怪,但却是真的......有时候你会想要两个复选框而不是单选按钮的语义原因)
答案 2 :(得分:1)
希望这会有所帮助:
function setFries(){
var hotdog= document.getElementById("hotdog");
var opt1= document.getElementById("opt1");
var opt2 = document.getElementById("opt2");
if(hotdog.checked){
opt1.checked = false;
opt2.checked = false;
}else if(opt1.checked){
opt2.checked = false;
}else if(opt2.checked){
opt1.checked = false;
}
}
答案 3 :(得分:1)
<input type="checkbox" name="fries" id="opt1" disabled="disabled" onclick="setFries(this);/>
<input type="checkbox" name="fries" id="opt2" disabled="disabled" onclick="setFries(this);/>
<input type="radio" name="o1" id="hotdog" onclick="setFries(this);"/>
请注意,我正在使用onclick事件:
function setFries(obj){
var fries = document.getElementsByName('fries');
if(obj.id =='hotdog') //Or check for obj.type == 'radio'
{
for(var i=0; i<fries.length; i++)
fries[i].checked = true;
}
else{
for(var i=0; i<fries.length; i++){
if(fries[i].id != obj.id){
fries[i].checked = !obj.checked;
break;
}
}
}
}
答案 4 :(得分:0)
为此找到的最简单的方法是根本不使用任何类型的代码。我在复选框属性中触发了操作。 1.向上移动鼠标以重置表格。然后,我未选中(用于重置)我的所有字段都接受我想要的复选框。然后,我对其他复选框执行了同样的操作,使之反方向执行。您基本上可以将复选框变成切换按钮,或者具有您想要的任何疯狂模式。