、、<select>
と呼ばれる 3 つのオプションを持つものがあります。スキーム#の選択に基づいて、(スキーム1の場合)およびボタン(スキーム2の場合)を切り替える必要があります。select
Scheme1
Scheme2
Checkboxes
radio
ケース 1: オプションを選択して (と)のScheme1
2 つにチェックを入れた場合は問題ありません。B
C
checkboxes
ケース 2:オプションを選択してボタンをScheme2
チェックし、オプションを選択した場合。radio
B
ここでもう一度選択するScheme1
と、以前に選択した 2 つのチェック ボックス 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:
<div id="schemeContainer"
ここでは、説明のみを目的として、同じ ID を持つ 2 つの div を示しています。実際には、DIV は 1 つだけで、2 つではありません。その単一の div のみでラジオとチェックボックスを置き換えます。