js/jq 多组radio选择问题!

friends571 2019-03-29 04:16:08
有如下代码,3组radio,只能选择2组,支持取消选择,请问JS代码怎么实现呢


<input type="radio" name="a" value="a1">
<input type="radio" name="a" value="a2">

<input type="radio" name="b" value="b1">
<input type="radio" name="b" value="b2">

<input type="radio" name="c" value="c1">
<input type="radio" name="c" value="c2">


比如a组选择了一个,b组也选择了一个,那么c组就不能选了,可以取消已经选择的选项,再选其它的,最后获取所有选中的值,请问怎么实现呢?
...全文
211 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2019-03-29
  • 打赏
  • 举报
回复
设置disabled就不能触发事件了,要弹出提示只有用样式模拟禁用状态。 用num变量判断最终选择两项 che就是最后的值的索引数组

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
	<title> 页面名称 </title>
<style type="text/css">
.disabled {
	opacity: 0.3;
	filter:alpha(opacity=30);
}
</style>
</head>
<body>
<script type="text/javascript" src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
<div class="rb">
<input type="radio" name="a" value="a1">
<input type="radio" name="a" value="a2">
<input type="radio" name="b" value="b1">
<input type="radio" name="b" value="b2">
<input type="radio" name="c" value="c1">
<input type="radio" name="c" value="c2">
</div>
<script type="text/javascript">
$(function(){
	var che = {};
	var num = 0;
	$(".rb").on("click", "input:not(.disabled)", function(event){
		var n = $(this).attr("name");
		var v = $(this).val();
		if (che[n]==v) {
			delete che[n];
			num--;
			$(this).prop("checked",false);
		} else {
			if (!(n in che))
				num++;
			che[n] = v;
		}
		$(".rb input").each(function(){
			$(this).toggleClass("disabled", num>=2 && !($(this).attr("name") in che));
		});
	});
	$(".rb").on("click", "input.disabled", function(event){
		event.preventDefault();
		alert("只能选择两项");
	});
});
</script>
</body>
</html>


friends571 2019-03-29
  • 打赏
  • 举报
回复
引用 1 楼 天际的海浪 的回复:
<div class="rb">
<input type="radio" name="a" value="a1">
<input type="radio" name="a" value="a2">
<input type="radio" name="b" value="b1">
<input type="radio" name="b" value="b2">
<input type="radio" name="c" value="c1">
<input type="radio" name="c" value="c2">
</div>
<script type="text/javascript">
$(function(){
	var che = {};
	var num = 0;
	$(".rb input").click(function(event){
		var n = $(this).attr("name");
		var v = $(this).val();
		if (che[n]==v) {
			delete che[n];
			num--;
			$(this).prop("checked",false);
		} else {
			if (!(n in che))
				num++;
			che[n] = v;
		}
		$(".rb input").prop("disabled",function(){
			return num>=2 && !($(this).attr("name") in che);
		});
	});
});
</script>
这里是超出之后就加上disabled,要实现点击灰色的选项弹出提示,而且判断最终的选择内容一定要选择两项,包括最后的值转换成索引数组的问题, 另,怎么联系,红包哈哈
天际的海浪 2019-03-29
  • 打赏
  • 举报
回复
<div class="rb">
<input type="radio" name="a" value="a1">
<input type="radio" name="a" value="a2">
<input type="radio" name="b" value="b1">
<input type="radio" name="b" value="b2">
<input type="radio" name="c" value="c1">
<input type="radio" name="c" value="c2">
</div>
<script type="text/javascript">
$(function(){
	var che = {};
	var num = 0;
	$(".rb input").click(function(event){
		var n = $(this).attr("name");
		var v = $(this).val();
		if (che[n]==v) {
			delete che[n];
			num--;
			$(this).prop("checked",false);
		} else {
			if (!(n in che))
				num++;
			che[n] = v;
		}
		$(".rb input").prop("disabled",function(){
			return num>=2 && !($(this).attr("name") in che);
		});
	});
});
</script>

87,914

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧