我有一个<select>
三个选项,称为select
, Scheme1
, Scheme2
。基于对方案#的选择,我必须切换Checkboxes
(对于方案 1)和radio
按钮(对于方案 2)。
案例1:当我选择Scheme1
选项并选中两个 (B
和C
)checkboxes
时,没关系。
情况2:当我选择Scheme2
选项并选中radio
按钮并选择B
选项时。
现在,如果我再次选择Scheme1
,我失去了之前对两个复选框 A 和 B 的选择,如果我选择Scheme2
,我也失去了B
从单选按钮中选择的选项。
我该如何处理。目前每次我绘制新的复选框列表和单选按钮列表。
如何维护复选框和单选按钮的状态?
我有以下 HTML 代码
<html>
<head>
</head>
<body>
<select name="sltScheme" onchange="funCall(this.value)">
<option value="select">Select Scheme</option>
<option value="Scheme1">Scheme 1</option>
<option value="Scheme2">Scheme 2</option>
</select>
<!-- will be displayed when Scheme 1 is selected but will be overwritten by Radio buttons-->
<div id="schemeContainer" style="display: block; visibility: visible;">
<span id="ele_0">
<input name="schemeType[]" type="checkbox" value="1">
</span>
<lable>A<br></lable>
<span id="ele_1">
<input name="schemeType[]" type="checkbox" value="2">
</span>
<lable>B<br></lable>
<span id="ele_2">
<input name="schemeType[]" type="checkbox" value="3">
</span>
<lable>C<br></lable>
</div>
<!--This separate DIV is just for illustration purpose only. Actually Radio buttons will be overwritten by Checkboxes and vice versa-->
<!-- will be displayed when Scheme 2 is selected but will be overwritten by Checkboxes-->
<div id="schemeContainer" style="display: block; visibility: visible;">
<span id="ele_0">
<input name="schemeType[]" type="radio" value="1">
</span>
<lable>A<br></lable>
<span id="ele_1">
<input name="schemeType[]" type="radio" value="2">
</span>
<lable>B<br></lable>
<span id="ele_2">
<input name="schemeType[]" type="radio" value="3">
</span>
<lable>C<br></lable>
</div>
</body>
</html>
而且我有以下 JavaScript/jQuery 代码(请注意,我添加了 jQuery 库,所以不要与 HTML 代码混淆)
<script>
function funCall(schemeType)
{
var obj = jQuery("input[name='schemeType[]']");
if(schemeType == "scheme1")
{
for(i=0;i<obj.length;i++)
{
var eleval = obj[i].value;
jQuery("#ele_"+i).each(function(i) {
jQuery(this).html('<input value = "'+eleval+'" type="checkbox" name="'+obj[i].name+'" id="'+obj[i].id+'"/>');
});
obj[i].checked = false;
}
}
else if(schemeType == "scheme2")
{
for(i=0;i<obj.length;i++)
{
jQuery("#ele_"+i).each(function(i) {
jQuery(this).html('<input value = "'+eleval+'" type="radio" name="'+obj[i].name+'" id="'+obj[i].id+'"/>');
});
}
}
}
</script>
编辑:
我已经id
从复选框和单选按钮中删除了属性,因为使用了name
属性。
编辑2:
我在这里展示了 2 个具有相同 id 的 div,<div id="schemeContainer"
仅用于说明目的。实际上应该只有一个 DIV 而不是两个。我将仅替换该单个 div 中的单选框和复选框。