比較的単純な HTML / JavaScript フォームがあります。このような:
<form method='POST' action='someurl'>
<label for='field1'>Your name</label>
<input id='field1' name='field1' type='text' />
<label for='field2'>Status</label>
<select id='field2' name='field2'>
<option>-select one-</option>
<option value='Employee'>Employee</option>
<option value='Retiree'>Retiree</option>
</select>
<label for='field3'>City you work in</label>
<input id='field3' name='field3' type='text' />
</form>
私ができる必要があるのは、field2 で選択した値に基づいて、field3 のラベル内のテキストを変更することです。したがって、フィールド 2 で「従業員」が選択されている場合、フィールド 3 のラベルには「勤務先の都市」と表示されますが、フィールド 2 で「退職者」が選択されている場合、フィールド 3 のラベルは「あなたが住んでいる都市」となります。
私が行った 1 つの解決策は、field3 ラベル内に複数のタグを配置し、次のように、JavaScript を使用してラベル内のどのタグを表示するかを切り替えることです。
// Form as above
<label for='field3'>
<span id='field3EmployeeLabel' style='display:none;'>City you work in</span>
<span id='field3RetireeLabel' style='display:none;'>City where you live</span>
</label>
<input id='field3' name='field3' type='text' />
function updateLabel() {
if($('#field2').val()=='Employee') {
$('#field3RetireeLabel').hide();
$('#field3EmployeeLabel').show();
}
else if($('#field2').val()=='Retiree') {
$('#field3EmployeeLabel').hide();
$('#field3RetireeLabel').show();
}
else {
$('#field3RetireeLabel').hide();
$('#field3EmployeeLabel').show();
}
}
私がこれを好まない主な理由は、すべて手作業でコーディングする必要があることです。これは単純な例にすぎません。field2 に 7 つまたは 8 つの異なるオプションがある場合はどうでしょうか? また、表示するラベルを決定するために複数のフォーム フィールド値を組み合わせる必要がある場合はどうすればよいでしょうか?
HTML でこの種のデザイン パターンやベスト プラクティスはありますか? 他の人は、フォームでこの種の要件をどのように処理しましたか?