在此动态填充的选择字段中添加onChange函数,以将结果回显到文本字段

时间:2012-10-29 12:14:51

标签: php

我检查了主板和Google搜索此代码但找不到任何内容。任何帮助将不胜感激。

我已经完成了一个教程,该教程根据汽车品牌查询数据库中的汽车模型。在代码中,当汽车模型是动态的时,汽车制造硬编码到选择。这是代码的第一部分:

    <?php 
    require_once("Connections/xxx.php"); // database connection

    $make = $_POST['make'];


    if ($make){
    $query= sprintf("SELECT * FROM car_model where car_model_id='$make'");
    $result = @mysql_query($query); 
    $rowModel = mysql_fetch_array($result);
    }
    ?>

这是选择硬编码:

<select name="make" onChange="document.forms[0].submit()">
<option value="">Select Make</option>
<option value="1" <?php if(!(strcmp(1, $make))){echo "selected";}?>>Alfa Romeo</option>
<option value="2" <?php if(!(strcmp(2, $make))){echo "selected";}?>>Audi</option>
<option value="3" <?php if(!(strcmp(3, $make))){echo "selected";}?>>BMW</option>
<option value="4" <?php if(!(strcmp(4, $make))){echo "selected";}?>>Citroen</option>

这是动态填充的选择:

 <select name="model">
<option value="">Select Model</option>
<?php do {  ?>
<option value="<?php echo $rowModel['car_model_id']; ?>"><?php echo $rowModel['car_model']; ?></option>
<?php  }while ($rowModel = mysql_fetch_array($result));  ?>

我想在这个动态填充的选择字段中添加一个onChange函数,以便将结果回显到文本字段,我尝试了很多组合,但是无法解决这个问题。谢谢

3 个答案:

答案 0 :(得分:0)

您的查询在构造查询或使用准备好的查询之前暴露给sql注入转义输入(建议使用php pdo)

<select name="model">
    <option value="">Select Model</option>
    <?php while ($rowModel = mysql_fetch_assoc($result)){  ?>
    <option value="<?php echo $rowModel['car_model_id']; ?>" onChange="textfield(this.value)" ><?php echo $rowModel['car_model']; ?></option>
    <?php  } ?>
<script>
function textfield(val)
{
  document.getElementById('your_text_filed_id').value=val;
}

<script>

答案 1 :(得分:0)

我建议使用jquery而不是将javascript内联。这样代码就可以重用了。

<select name="model">
    <option value="">Select Model</option>
    <?php while ($rowModel = mysql_fetch_assoc($result)){  ?>
      <option value="<?php echo $rowModel['car_model_id']; ?>">
       <?php echo $rowModel['car_model']; ?>
      </option>
    <?php  } ?>
</select>
<input type="text" id="model_text">

这是应放入常见js文件的javascript。

<script>
  $(document).ready(function(){
     $('select[name="model"]').change(function(){
       $('#model_text').val($(this).text());
     });
  });
</script>

我还建议像Arun Killu说要做一些没有sql注入的事情。将变量放入sql而不首先清理它永远不是一个好主意。即使目前用户无权更改它。

答案 2 :(得分:0)

由于你不喜欢我的jquery版本,我仍然认为这是一个更好的答案,我确信不会在每个浏览器中支持javascript方式并且非常错误(因此大多数人使用的原因) jquery的)

<select name="model" onchange="update_textbox()" id="model">
    <option value="">Select Model</option>
    <?php while ($rowModel = mysql_fetch_assoc($result)){  ?>
      <option value="<?php echo $rowModel['car_model_id']; ?>">
       <?php echo $rowModel['car_model']; ?>
      </option>
    <?php  } ?>
</select>
<input type="text" id="model_text">
<script>
 function update_textbox(){
  var selectbox = document.getElementById('model');
  var model = selectbox[selectbox.selectedIndex].text;
  document.getElementById('model_text').value=model ;
 }
</script>