我有一個<select>
,有三個選項,分別叫做select
,Scheme1
,Scheme2
。根據方案#選擇我不得不切換Checkboxes
(方案1)和radio
按鈕(方案2)。如何使用jquery維護單選按鈕和複選框的狀態(不需要刷新頁面)
案例1:當我選擇Scheme1
選項,並檢查兩(B
和C
)checkboxes
,它的罰款。情況2:當我選擇Scheme2
選項,並選中radio
按鈕,我選擇B
選項。
現在,如果我再次選擇Scheme1
我失去了兩個複選框A和B的我以前的選擇,如果我選擇Scheme2
我也失去了從單選按鈕,選擇我的選項B
。
我如何處理這個問題。目前每次我繪製新的複選框列表和單選按鈕列表。
我如何保持兩個複選框,單選bottons狀態?
我有以下的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代碼
<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>
編輯(我已經添加jQuery庫,所以不要用HTML代碼混淆注):
我已刪除id
從兩個複選框和單選按鈕屬性,因爲使用name
屬性。
編輯2:
我在這裏2周所示的div相同的id <div id="schemeContainer"
只是僅供說明用途。其實應該只有一個DIV而不是兩個。我將僅替換單個div中的廣播和複選框。
首先,您的每個輸入都應該有一個唯一的id屬性,並且兩個設置(複選框/收音機)中的每一個都應該有一個唯一的名稱。 –
@StevenMoseley,謝謝指點。請參閱更新的代碼。我使用'name'屬性,所以不需要'id'屬性。而且我在'name'屬性中使用'[]'作爲'Array' – NullPointer
'div's('id =「schemeContainer」')也是如此:該id應該是唯一的,並且使用相同的id兩次在一個頁面上很調皮。 –