如何根据下拉列表填写表单字段

时间:2012-03-20 19:55:50

标签: php jquery ajax

我有一个包含用户名,地址和电子邮件的表单。 名单列表来自数据库,我需要做的是,当我选择用户名时,地址和电子邮件信息填充其他2个字段(我有另一个字段,但我只需要那些填写) 我正在使用php和mysql数据库

2 个答案:

答案 0 :(得分:1)

这可能不是最佳的 - 实际上我不肯定它是有效的,因为我根本没有测试它,但我相信如果它不起作用你会弄明白:

假设您的表单有一个名称=“personInfo”,名称下拉列表中有name =“personName”,地址是一个名为“address”的文本输入字段。

在personName中选择标签添加

onChange="updateValues()"

然后你需要一些类似这样的javascript:

function updateValue() {
var addresses = new Array();
<?php
//add some php code to populate the java array. Something like
for ($i=0; $i<$numAddresses; $i++) {
    echo 'addresses['.$i.'] ='.$addressFromDB[$i].';';
}
?>
document.personInfo.address.value = addresses[document.personInfo.personName.selectedIndex];   

}

并为电子邮件重复同样的事情

答案 1 :(得分:0)

显然,你必须修改它以匹配你的元素ID等,但这对我有用。

这是你的HTML:

<script type="text/javascript">
function grabInfo(str)
{
if (str=="")
  {
  document.getElementById("contentDiv").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
       document.getElementById("contentDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","getinfo.php?q="+str,true);
xmlhttp.send();
}
</script>

<select name="users" onchange="grabInfo(this.value)">
    <option value="" selected="selected">Select a person:</option>
    <option value="1">Person A</option>
    <option value="2">Person B</option>
    </select>

    <div id="contentDiv">

    </div>

后端PHP(getinfo.php):

<?php
$q=$_GET["q"];

//MySQL connection string


$sql="SELECT * FROM <table> WHERE <parameter> = '".$q."'";

$result = mysql_query($sql);


while($row = mysql_fetch_array($result))
  {
  echo '<input type="text" id="address" value="' . $row['address'] . '">';
  echo '<input type="text" id="email" value="' . $row['email'] . '">';
  }
?>

contentDiv将显示两个文本框。 getinfo.php将成为实际操作数据库的PHP。