1

2つのドロップダウンボックスを持つフォームを作成して、2番目のドロップダウンのオプションが最初のドロップダウンの選択に依存するようにします。したがって、Dropdown1はユーザーにCourseAまたはCourseBを選択するように要求し、Dropdown2は日付のセットを表示する場合がありますが、日付はDropdown1での選択によって異なります。

post配列を使用してDropdown2の選択肢を設定しようとしましたが、フォームが送信されるまで設定されないことに気付きました。フォームが送信される前に問題が発生します。

誰かがこれを行う方法を提案できますか?私はcodeigniterを使用していますが、これはcodeigniterの問題ではなくphpの問題だと思います。

4

3 に答える 3

1

最初のドロップダウンを選択したら、サーバーに対して非同期呼び出しを行う必要があります。Javascriptがあなたの答えになります。CodeIgnitorがネイティブにそれを行うかどうかはわかりませんが、J-queryのようなフレームワークがおそらく最も早くそこに到達します。

于 2012-01-10T17:26:02.403 に答える
0

解決策はAJAXを使用することです。

最初の選択メニューを変更するときに、JavaScriptが(最も簡単な方法で)jQueryメソッドを介してサーバー側スクリプトにクエリを実行するようにします。このメソッドPOSTは、データベースにクエリを実行して、選択メニューオプションを返します。

jQuery投稿

于 2012-01-10T17:25:53.067 に答える
0

jQueryを使用した完全なソリューションは次のとおりです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us" lang="en-us">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>test</title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

  <script type="text/javascript">
  /*<![CDATA[*/
  function populateSel2()
  {
    $.post( 'formsel2.php',
           {sel1: $('#sel1').val()},
           function(data)
           {
            var sel2 = $('#sel2');
            var o=jQuery.parseJSON(data);

            sel2.children().remove();

            var l=o.length;
            for(var i=0; i<l; i++)
              sel2.append('<option value="'+o[i].val+'">'+o[i].txt+'<'+'/option>');
           }
          );
  }

  $(document).ready( function()
            {
            $('#sel1').change( populateSel2 );
            populateSel2();
            } );
  /*]]>*/
  </script>

</head>
<body>
  <form method="post" action="#">
    <fieldset>
      <select name="sel1" id="sel1">
        <option value="">-= Select =-</option>
        <option value="1">Val 1</option>
        <option value="2">Val 2</option>
      </select>
    </fieldset>
    <fieldset>
      <select name="sel2" id="sel2">
        <option value="">Select first option</option>
      </select>
    </fieldset>
  </form>
</body>
</html>

formsel2.php

<?php

if(empty($_POST['sel1']))
{
  echo json_encode(array( array('val'=> '', 'txt' => 'Select first option') ) );
}
else if($_POST['sel1']=='1')
{
  echo json_encode(array( array('val'=> 'A_1', 'txt' => 'Option A#1') , array('val'=> 'A_2', 'txt' => 'Option A#2'), array('val'=> 'A_3', 'txt' => 'Option A#3') ));
}
else
{
  echo json_encode(array( array('val'=> 'B_1', 'txt' => 'Option B#1') , array('val'=> 'B_2', 'txt' => 'Option B#2'), array('val'=> 'B_3', 'txt' => 'Option B#3') ));
}
于 2012-01-10T19:04:04.207 に答える