関連するドロップダウンリストが2つあり、2番目のドロップダウンリストの内容は、最初のドロップダウンリストで行った選択によって異なります。たとえば、次のHTMLコードでは、最初に適用方法を選択します。適用方法としてAerialを選択した場合は、Aerialsizedistなどの追加の質問に答えます。それ以外の場合は、グラウンドスプレータイプに答える必要があります。
したがって、Webページが読み込まれると、2つの第2レベルのドロップダウンリスト(空中サイズの距離と地上スプレーの種類)が非表示になります。それらは、最初のもの(適用方法)で関連する選択が行われた場合にのみ表示されます。
この機能はjQuery(jQueryコードの下)で実現できます。しかし、私のアプローチはかなりばかげています。私の質問は:
シーケンスをカウントせずに行全体を選択する方法はありますか(nth-child())?要素IDの選択に基づいて、行全体を選択できますか?たとえば、最初に$('#id_A')を選択してから、選択範囲を行全体に展開できますか?
考えられるすべての選択肢を比較するのではなく、この非表示または表示機能を実現するためのより良い方法(ループ?)はありますか(($(this).val()== "X"))?
ありがとう!
これがHTMLコードで、フォームはDjangoによって生成されます。
<div class="articles">
<form method="GET" action=_output.html>
<table align="center">
<tr><th><label for="id_application_method">Application method:</label></th><td><select name="application_method" id="id_application_method">
<option value="">Pick first</option>
<option value="A">Aerial</option>
<option value="B">Ground</option>
</select></td></tr>
<tr><th><label for="id_A">Aerial Size Dist:</label></th><td><select name="aerial_size_dist" id="id_A">
<option value="A1" selected="selected">A1</option>
<option value="A2">A2</option>
</select></td></tr>
<tr><th><label for="id_B">Ground spray type:</label></th><td><select name="ground_spray_type" id="id_B">
<option value="B1" selected="selected">B1</option>
<option value="B2">B2</option>
</select></td></tr>
</table>
</form>
</div>
jQueryコードは次のとおりです。
<script type="text/javascript" src=" https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script>
<script>$(function() {
$("tr:nth-child(2)").hide();
$("tr:nth-child(3)").hide();
$('#id_application_method').change(function() {
($(this).val() == "A") ?
$("tr:nth-child(2)").show() : $("tr:nth-child(2)").hide();
($(this).val() == "B") ?
$("tr:nth-child(3)").show() : $("tr:nth-child(3)").hide();
});});</script>