jquery使2组单选按钮相互镜像
Jquery to Make 2 Sets of Radio Buttons Mirror Eachother
我正在尝试设置两组同时起作用的单选按钮。 换句话说,每当在顶部检查男性时,我希望自动检查底部的男性。 (反之亦然( 如果用户向下滚动并单击女性,则应检查顶部的那个。 无论用户单击哪个无线电,两个无线电集都应始终选中相同的值。 请告知最实用的方法来实现此目的。 我的主要重点是Javascript或Jquery,但我花了几个小时试图想出一些无济于事的东西。 请指教。 谢谢! :)
<div class="top">
<input type="radio" name="sex" value="Male" /> Male<br />
<input type="radio" name="sex" value="Female" checked="checked" /> Female<br />
</div>
<div>Random Content</div>
<div class="bottom">
<input type="radio" name="sex2" value="Male" /> Male<br />
<input type="radio" name="sex2" value="Female" checked="checked" /> Female<br />
</div>
附加到 change
事件并选择所有其他单选按钮,这些单选按钮具有相同的name
开头,value
相等但不是当前按钮。
$("input[name^='sex']").change(function(){
var $otherRadioButtons = $("input[name^='sex'][value='" + this.value + "']").not(this);
$otherRadioButtons.prop('checked', $(this).prop('checked'));
});
以上没有使用您可以自己添加的选择器的任何巧妙缓存。
基本上,每当单选按钮更改其检查值时,代码将选择具有相同value
(男性/女性(的所有其他单选按钮,这些按钮也以相同的name
(性别????(开头,并将其 checked 属性设置为与当前相同的值。
我希望这是有道理的。请参阅下面的工作演示。
演示 - 更改一组中的单选按钮。
编辑
我刚刚注意到..我正在使用jquery 1.3.2,升级不是一种选择 此刻。你没有碰巧有 1.3.2 的替代品吧?
对于 jQuery 版本 1.3.2,请使用 attr
方法而不是 prop
方法:
$("input[name^='sex']").change(function(){
var $otherRadioButtons = $("input[name^='sex'][value='" + this.value + "']").not(this);
$otherRadioButtons.attr('checked', $(this).attr('checked'));
});
DEMO - 使用 jQuery 1.3.2 更改集合中的单选按钮。
只需向两个集合添加一个 onclick 侦听器即可。喜欢这个:
document.getElementById("male1").onclick=clickMale;
document.getElementById("male2").onclick=clickMale;
document.getElementById("female1").onclick=clickFemale;
document.getElementById("female2").onclick=clickFemale;
function clickMale(){
document.getElementById("male1").checked=true;
document.getElementById("male2").checked=true;
}
function clickFemale(){
document.getElementById("female1").checked=true;
document.getElementById("female2").checked=true;
}
并将 ID 添加到单选按钮("男性 1"、"男性 2"、"女性 1"、"女性 2"(
既然你提到了它,Zove 在 jQuery 中的答案将是这样的,如果你愿意的话:
$("#male1").click(clickMale);
$("#male2").click(clickMale);
$("#female1").click(clickFemale);
$("#female2").click(clickFemale);
function clickMale(){
$("#male1").attr('checked', true);
$("#male1").attr('checked', true);
}
function clickFemale(){
$("#female1").attr('checked', true);
$("#female2").attr('checked', true);
}
这么简单的事情,你不需要jQuery,但是如果你在其他地方使用它,最好保持一致。
男性/女性输入共享一个类可能是有意义的,例如"js-male"或"js-female"(。这样可以节省一些代码。例如,您可以执行以下操作:
$('.js-male').change(function() {
$('.js-male').attr('checked', $(this).attr('checked'));
});
$('.js-female').change(function() {
$('.js-female').attr('checked', $(this).attr('checked'));
});
可能有更优雅的方式来处理整个情况。你真的希望输入有不同的名称('male'、'male2'(,这意味着你的服务器接收两个不同的参数吗?如果为两个单选按钮组指定相同的名称,则只有最后一个按钮的值将被发送到服务器,无论如何,如果您仍然镜像单选按钮,这并不重要。
演示
只需更改jQuery源代码的位置,即可开箱即用。
<html>
<head>
<script src="jquery-1.7.1.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#male1, #male2").live("click", function(){
$("#male1").attr("checked", $("#male2").attr("checked"));
$("#male2").attr("checked", $("#male1").attr("checked"));
});
$("#female1, #female2").live("click", function(){
$("#female1").attr("checked", $("#female2").attr("checked"));
$("#female2").attr("checked", $("#female1").attr("checked"));
});
});
</script>
</head>
<body>
<div class="top">
<input id="male1" type="radio" name="sex" value="Male" /> Male<br />
<input id="female1" type="radio" name="sex" value="Female" checked="checked" /> Female<br />
</div>
<div>Random Content</div>
<div class="bottom">
<input id="male2" type="radio" name="sex2" value="Male" /> Male<br />
<input id="female2" type="radio" name="sex2" value="Female" checked="checked" /> Female<br />
</div>
</body>
</html>
- 多个单选按钮组相互干扰
- 是否可以禁用jquery中的单个单选按钮
- jquery使2组单选按钮相互镜像
- 如何使传单层控件中的复选框表现得像单选按钮
- 如何在使用代码镜像单击按钮时撤消选定/突出显示的文本
- 如何使复选框表现得像ng repeat中的单选按钮
- 像单选按钮一样切换图像
- 一组单选按钮上的onfocus事件如何像单个控件一样工作?
- 引导多选复选框的行为像单选按钮
- 像单选按钮一样的复选框|使用icheck.js
- 在angularJS中像单选按钮一样的多行按钮
- HTML使常规按钮像一组单选按钮一样
- 复选框像单选按钮一样工作,但不会改变UI组件
- 像单选按钮一样的复选框功能
- Angular JS知道什么是用复选框图像和单选按钮图像触发的
- 使复选框可以像单选按钮一样一次选择一个
- 我如何像对keyup事件中的文本框一样,对单选按钮点击事件进行实时验证
- 复选框确实'nt在表现得像单选按钮之后,再次表现得很理想
- 为什么我的电子邮件地址栏没有像我希望的那样显示在我的单选按钮的右侧?
- 使背景像单选按钮一样在打开状态和关闭状态之间切换,当单击它时