以下のコードは機能しますが、次の問題があります。
- これは、望ましい結果を得るための最も効率的でエレガントなソリューションでさえありますか?そうでない場合、誰かが私を正しい方向に向けることができますか?
- ページの読み込み時に、jQueryはフォーム上のMainWidgetName(選択入力)の値を読み取っていません...そのフィールドに変更が加えられるまで何も表示されません。
- 値をクリアし、変更時に未使用/関連付けられていないフィールドの選択入力を無効にする方法、またはjavascriptが無効になっている場合はどうすればよいですか?
jQuery:
<script type="text/javascript">
$(document).ready(function()
{
$.viewMap = {
'0' : $([]),
'6' : $('#result1'),
'7' : $('#result2'),
'8' : $('#result3'),
'9' : $('#result4'),
'10': $('#result5'),
'11': $('#result6')
};
$('#mainWidgetName').change(function()
{
// hide all
$.each($.viewMap, function() {$(this).hide(); });
// show current
$.viewMap[$(this).val()].show();
});
});
</script>
HTML:
<table class="simple">
<?php echo $form['mainWidgetName']->renderRow(); ?>
<tr id="result1" style="display:none"><th><?php echo $form[‘widgetName1’]->renderLabel() ?></th><td><?php echo $form['widgetName1']->render(); ?></td></tr>
<tr id="result2" style="display:none"><th><?php echo $form[‘widgetName2’]->renderLabel() ?></th><td><?php echo $form['widgetName2']->render(); ?>t</td></tr>
<tr id="result3" style="display:none"><th><?php echo $form[‘widgetName3’]->renderLabel() ?></th><td><?php echo $form['widgetName3']->render(); ?></td></tr>
<tr id="result4" style="display:none"><th><?php echo $form[‘widgetName4’]->renderLabel() ?></th><td><?php echo $form['widgetName4']->render(); ?></td></tr>
<tr id="result5" style="display:none"><th><?php echo $form[‘widgetName5’]->renderLabel() ?></th><td><?php echo $form['widgetName5']->render(); ?></td></tr>
<tr id="result6" style="display:none"><th><?php echo $form[‘widgetName6’]->renderLabel() ?></th><td><?php echo $form['widgetName6']->render(); ?></td></tr>
<tr><td></td><td><input type="submit" value="Submit" /></td></tr>
</table>