ユーザーが選択するラジオボタンに応じて、選択/ドロップダウンボックス内の選択肢を変更するWebフォームを作成しています。私はこれを達成する方法を発見した、私はこのようにそれを行う:Jquery:いくつかのラジオボタンに応じて選択項目を変更します
var arrayType1=["A", "B", "C"];
var arrayType2=["D", "E", "F"];
var arraySubType1=["A1", "B1"];
var arraySubType2=["C1", "C2"];
var mapType={ rbtA : arrayType1, rbtB : arrayType2 }
$('#rbtA, #rbtB').change(function() {
$("#selectType option").remove();
$.each(mapType[this.id], function(i, val) {
var opt = $("<option />");
opt.appendTo($("#selectType")).text(val).val(val);
});
});
これは動作します:ここで
<INPUT TYPE="radio" NAME="mainType" id="rbtA" Value="RadiobuttonA" onClick=0>Option 1<br>
<INPUT TYPE="radio" NAME="maalertype" id="rbtB" Value="RadiobuttonB" onClick=0>Option 2<br>
<INPUT TYPE="radio" NAME="subType" id="rbtSubA" Value="SubA" />Sub-option 1
<INPUT TYPE="radio" NAME="subType" id="rbtSubB" Value="SubB" />Sub-option 2
<b>Make your selection: </b><br>
<SELECT id="selectType" style="width: 150" NAME="Spenning">
<OPTION selected="selected"></OPTION>
</SELECT>
はjqueryのです。ここでは、ユーザーがrbtSubAまたはrbtSubBのいずれかを選択した場合、dropdownbox selectTypeのオプションをarraySubType1またはarraySubType2の代替に変更します。
$('#rbtSubA, #rbtSubB').change(function() {
if ($('#rbtSubA').is(':checked')){
//I thought I could do it as simple as changing the content of the value mapType
mapType={ rbtA : arraySubType1, rbtB : arrayType2 };
$("#selectType option").remove();
$.each(mapType[this.id], function(i, val) {
var opt = $("<option />");
opt.appendTo($("#selectType")).text(val).val(val);
});
}
if ($('#rbtSubB').is('checked')){
//vice versa
}
});
私はこれをChromeで実行し、[ツール] - > [開発ツール]をオンにしました。私は、rbtAとrbtB間selectTypeの変更の内容を交互に、私はrbtSubA、
をselecetとき、私は、エラーメッセージ
"Uncaught TypeError: Cannot read property 'length' of undefined.
を得るとき、私は、誰もが何を見ることができ、ここでは未定義されるかもしれない変数を参照することはできませんこれは間違っていますか?それとも、これが問題を引き起こしている場合、これはいくつかのOTH
[JS Fiddle](http://jsfiddle.net/)..を提案してもいいですか? –
mapVoltageはどこに定義されていますか? –
著者は「誤植」(少なくとも3件)を認めていて、それを収集することを拒否しています。質問が解決されるまで-1。 –