0

以下のコードは機能しますが、次の問題があります。

  1. これは、望ましい結果を得るための最も効率的でエレガントなソリューションでさえありますか?そうでない場合、誰かが私を正しい方向に向けることができますか?
  2. ページの読み込み時に、jQueryはフォーム上のMainWidgetName(選択入力)の値を読み取っていません...そのフィールドに変更が加えられるまで何も表示されません。
  3. 値をクリアし、変更時に未使用/関連付けられていないフィールドの選択入力を無効にする方法、または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>
4

1 に答える 1

0

私が探していた結果を達成する素晴らしいプラグインを見つけました:

http://www.erichynds.com/jquery/jquery-related-dependent-selects-plugin/

于 2012-09-18T22:23:43.043 に答える