我在基于xtcommerce的解决方法中使用了许多单选按钮。这些radiobutton是动态创建的,并为每个组赋予不同的名称,如下所示:
<input type="radio" name="id[1]" value="40">
<input type="radio" name="id[1]" value="30">
<input type="radio" name="id[1]" value="20">
<input type="radio" name="id[1]" value="10">
<input type="radio" name="id[2]" value="40">
<input type="radio" name="id[2]" value="30">
<input type="radio" name="id[2]" value="20">
<input type="radio" name="id[2]" value="10">
<input type="radio" name="id[3]" value="10">
....
现在我想将这些无线电按钮“组合”在一起,这样我一次只能选择一个无线电按钮。现在默认情况下,每个“组”(name =“id [1]”,name =“id [2]”等)的每个第一个单选按钮都被预选,每个单选按钮的每个值都会被提交。
我在stackoverflow上发现这个脚本只选择一个单选按钮:
$(document).ready(function () {
$('input[type=radio]').prop('checked', false);
$('input[type=radio]:first').prop('checked', true)
$('input[type=radio]').click(function (event) {
$('input[type=radio]').prop('checked', false);
$(this).prop('checked', true);
event.preventDefault();
});
});
这是一个小提琴:
到目前为止,我只能在我的页面上选择一个单选按钮。但是你可以在我的js-fiddle中看到一个问题:
第一组的第一个单选按钮是预选的 - 没关系。但是如果您选择同一组的另一个单选按钮,则选择 - “标记”不会改变。只有当您单击另一组的单选按钮时,所选的单选按钮才会被选中(在FF (编辑:和Opera以及IE9)中发现另一个错误),如果选择标记未显示,则我选择任何其他单选按钮;在Chrome中,它会通过选择另一个组来更改)。如果您留在同一组中,则选择也不会更改。
在我的本地安装上,我有一个动态变化的更新程序,它说明了所选项目的新价格(抱歉,我无法将其实现为小提琴)。到目前为止,即使我选择了同一组的另一个单选按钮,价格也会更新,但如前所述,选择 - “标记”不会改变......
对这个问题有任何想法吗?
答案 0 :(得分:12)
您无需取消选中所有单选按钮,然后重新检查当前按钮。取消选中先前选中的按钮就足够了。
作为此简化的副作用,您的错误也已修复。
$(document).ready(function () {
$('input[type=radio]').change(function() {
// When any radio button on the page is selected,
// then deselect all other radio buttons.
$('input[type=radio]:checked').not(this).prop('checked', false);
});
});
答案 1 :(得分:1)
为什么你有event.preventDefault();
....因为你的代码在点击功能中正在这样做。
删除event.preventDefault();
并尝试
这是小提琴..
答案 2 :(得分:1)
只需删除event.preventDefault();
即可。
选中此JSFIDDLE
答案 3 :(得分:0)
单选按钮的名称不同,但只有一个选择
工作示例: https://codepen.io/Vivekparashar/pen/wvwLwxY
JS:
$(document).ready(function() {
$("input[type=radio]").prop("checked", false);
$("input[type=radio]:first").prop("checked", true);
$("input[type=radio]").click(function(event) {
$("input[type=radio]").prop("checked", false);
$(this).prop("checked", true);
//event.preventDefault();
});
});
HTML:
<div class="mycontainer">
<h3 class="heading">Radio Button With Different Name/Group but Single Selection</h3>
<hr>
<form>
<div class="radioDiv">
<label class="11">Radio Button 1</label>
<input type="radio" name="radiobutton1">
</div>
<div class="radioDiv">
<label>Radio Button 2</label>
<input type="radio" name="radiobutton2">
</div>
<div class="radioDiv">
<label>Radio Button 3</label>
<input type="radio" name="radiobutton3">
</div>
<div class="radioDiv">
<label>Radio Button 4</label>
<input type="radio" name="radiobutton4">
</div>
<div class="radioDiv">
<label>Radio Button 5</label>
<input type="radio" name="radiobutton5">
</div>
</form>
</div>