jQuery复选框与单选按钮一样工作,但与复选框相反



我创建了输入类型复选框字段,如下所示:

<input type="checkbox" class="" value="1" name="foo" />
<input type="checkbox" class="" value="1" name="foo" />
<input type="checkbox" class="" value="1" name="foo" />

现在我希望复选框像单选按钮一样工作。所以使用jquery运行良好:

$("input:checkbox").click(function(){
var group = "input:checkbox[name='"+$(this).prop("name")+"']";
$(group).prop("checked",false);
$(this).prop("checked",true);
});

但现在,如果我想使用jquery将复选框作为复选框工作,那么就不工作了。

这是可能的,但你真的不应该这样做。这会导致糟糕的用户体验,因为用户通常会认为一组复选框意味着他们可以选择多个复选框。如果他们看到单选按钮,他们知道他们必须做出单一选择。如果他们发现一个复选框集不能选择多个,这可能会令人沮丧,他们甚至可能认为你的应用程序中有漏洞。

此外,你为什么需要";重新启用";任何东西一旦问题得到回答,您将提出一个新问题。你不会对一个新问题重复使用相同的标记。。。那没有任何意义。

相反,在呈现每个问题时,根据数据库指示问题需要多个答案还是单个答案,使代码(根据您的呈现架构,无论是客户端还是服务器端(生成复选框或单选按钮。这应该比处理复选框行为的解决方案更简单,并将带来更好的UI。

您应该使用单选按钮,但如果必须使用复选框:

$("input:checkbox").change(function(){
$("input:checkbox").not(this).prop("checked",false);
});

您可以解除对点击处理程序的绑定

$("input:checkbox").click(function(){
var group = "input:checkbox[name='"+$(this).prop("name")+"']";
$(group).prop("checked",false);
$(this).prop("checked",true);
});
function disableRadio ( ) {
$("input:checkbox").unbind();
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<input type="checkbox" class="" value="1" name="foo" />
<input type="checkbox" class="" value="1" name="foo" />
<input type="checkbox" class="" value="1" name="foo" />   
<button type="button" onclick="disableRadio()">Disable Radio</button> 
</body>
</html>

尝试使用Add classmultipal

<input type="checkbox" class="multipal" value="1" name="foo" />
$("input:checkbox").click(function(){
var group = "input:checkbox[name='"+$(this).prop("name")+"']";
if($(this).hasClass('multipal')){
$(this).prop("checked",true);  
}
else{
$(group).prop("checked",false);
$(this).prop("checked",true);
}
});

$("input:checkbox").click(function(){
var group = "input:checkbox[name='"+$(this).prop("name")+"']";
if($(this).hasClass('multipal')){
$(this).prop("checked");  
}
else{
$(group).prop("checked",false);
$(this).prop("checked",true);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" class="" value="1" name="foo" />
<input type="checkbox" class="" value="1" name="foo" />
<input type="checkbox" class="" value="1" name="foo" />
<h2>Multipal<h2>
<input type="checkbox" class="multipal" value="1" name="foo" />
<input type="checkbox" class="multipal" value="1" name="foo" />
<input type="checkbox" class="multipal" value="1" name="foo" />

最新更新