1

このバスの解像度を高低で検索しましたが、解決できませんでした。動的ドロップダウンで2番目のドロップダウンの値を調整し、テキストボックスにテキスト値を入力したいときに、これを機能させることができました。

ここで、2 番目のステップを省略したいと思います。実際には、2 番目のドロップダウンを削除して、テキスト ボックスに値を入力するだけです。2番目のステップを削除するためにあらゆることを試みましたが、実行するとすぐにすべてが機能しなくなります。

現時点では、関数は2番目のドロップダウンを見て、そのオプションを設定し、行を追加しました

document.getElementById('fld_ClientID').value =""

テキストボックスにデータを入力してもらいます。tblPromotions への参照を完全に取り除き、テキスト ボックスのデータのみを取得するにはどうすればよいですか。

<script language="javascript">  
function setOptions(chosen) {  
  var selbox = document.myform.selectpromotion; 

  selbox.options.length = 0;  
  if (chosen == "0") {  
    selbox.options[selbox.options.length] = new Option('First select a client','0');  

  }  
  <?php  
  $client_result = mysql_query("SELECT * FROM tblClients ORDER BY ClientName") or die(mysql_error());  
  while(@($c=mysql_fetch_array($client_result)))  
  {  
  ?>  
    if (chosen == "<?=$c['ClientID'];?>") {  

    <?php  
    $c_id = $c['ClientID'];  
    $promo_result = mysql_query("SELECT * FROM tblPromotions WHERE ClientID='$c_id'") or die(mysql_error());  
    while(@($m=mysql_fetch_array($promo_result)))  
    {  
    ?>  
      selbox.options[selbox.options.length] = new  
      Option('<?=$m['PromotionName'];?>','<?=$m['ClientID'];?>'); 
      document.getElementById('fld_ClientID').value ="<?=$m['ClientID'];?>"; 
    <?php  
    }  
    ?>  
    }  
  <?php  
  }  
  ?>  
}  
</script>  
</head>  
<body>  
<form name="myform"  method="POST" action="processaddpromotionNEW.php"> ><div align="center">  
  <p> 
     <select name="selectclient" size="1"  
    onchange="setOptions(document.myform.selectclient.options  
    [document.myform.selectclient.selectedIndex].value);">  
    <option value="0" selected>Select a client</option>  
    <?php  
    $result = mysql_query("SELECT * FROM tblClients ORDER BY ClientName") or die(mysql_error());  
        while(@($r=mysql_fetch_array($result)))  
    {  
    ?>  
    <option value="<?=$r['ClientID'];?>"> 
      <?=$r['ClientName'];?> 
      </option>  
    <?php  
    }  
    ?>  
  </select> 
  <br><br>  
  <select name="selectpromotion" size="1">  
    <option value=" " selected>First select a client</option>  
  </select> 
  </p> 
  <p> 
<input name="fld_ClientID" type="text" class="Arial" id="fld_ClientID" tabindex="11" size="10" /> 
  <br> 
4

1 に答える 1

0

おそらく、javascript 関数内で mysql クエリを実行するべきではありません。次のいずれかを行う必要があります: ajax を使用して可能なオプションを取得するか、可能なすべてのオプションを一度クエリしてからグローバル変数に保存します。

何かのようなもの:

<script>
var secondOptions = {};
<?php  
    $promo_result = mysql_query("SELECT * FROM tblPromotions") or die(mysql_error());  
    while(@($m=mysql_fetch_array($promo_result))){  
    ?>  
        if(secondOptions['<?=$m['ClientID'];?>'] == undefined)
            secondOptions['<?=$m['ClientID'];?>'] = {};
        secondOptions['<?=$m['ClientID'];?>']['<?=$m['PromotionId'];?>'] = '<?=$m['PromotionName'];?>'; 
    <?php  
    }  
    ?>  

    setOptions(clientId){
        jQuery("select[name=selectpromotion]").empty();
        options = "";
        jQuery.each(secondOptions[clientID],function(a,b){
            options += "<option value='"+a+"'>"+b+"</options>";
            });
        jQuery("select[name=selectpromotion]").append(options);
    }

    <select name="selectclient" size="1" onchange="setOptions(jQuery(this).val());">  

    ...
于 2012-11-12T09:45:58.083 に答える