有很多方法可以做到这一点。这是一个:
准备页面时,查询所有Contact
行列并将它们放入页面上的 JavaScript 数组中。输出可能看起来像这样(有很多正确的方法可以实现):
<script language=JavaScript>
var contactInfo = new Array(
{prodID: 1, name1: 'aaaa', name2: 'bbbb', name3: 'cccc', name4: 'dddd'},
{prodID: 4, name1: 'eeee', name2: 'ffff', name3: 'gggg', name4: 'hhhh'},
...
{prodID: 90, name1: 'wwww', name2: 'xxxx', name3: 'yyyy', name4: 'zzzz'}
);
在下拉列表中onchange
,调用一个函数来处理productID
选择:
<select name="ddlProductID" onchange="processProductChange(this);">
确保您定义了文本框。对于此示例,我将txtName1
通过以下方式调用它们txtName4
:
<input type=text name="txtName1">
...
<input type=text name="txtName1">
在被调用的函数中,获取下拉列表的值并将其定位在contactInfo
数组中。这将引导您找到名称,您可以将它们弹出到文本框中:
function processProductChange(prodDropdown) {
for (indx = 0; indx < contactInfo.length; ++indx) {
if (contactInfo[indx].prodID == prodDropdown.value {
// The product ID has been located in the array. Put its names
// in the txtName1 through txtName4 textboxes.
document.forms[0].txtName1.value = contactInfo[indx].name1;
document.forms[0].txtName2.value = contactInfo[indx].name2;
document.forms[0].txtName3.value = contactInfo[indx].name3;
document.forms[0].txtName4.value = contactInfo[indx].name4;
// all done, can get out
break;
}
}
}
附录:OP 要求提供有关此方法的更多详细信息。这需要一些 PHP 代码,我不太擅长,但我知道我将首先给出关于使用mysql
PHP 函数的强制性警告。开始...
PHPmysql
函数已弃用。请改用PDO或mysqli。
现在回到答案。如前所述,我的 PHP 不是那么好,但基本上你想{prodID: ... }
在填充下拉列表时格式化步骤 1 中的脚本行;这样你只需要扫描一次结果。它会是这样的(穿插在评论中提供的 OP 代码中):
<?php
$jsArray = '';
while ($row = mysql_fetch_array($productlist)) {
$rowmod = strtr($row['ProductID']," ","_"); // change the spaces to underscore to work in URL line
if (jsArray) {
// comma between elements
jsArray .= ",";
}
jsArray .= "\n{prodID: {$row['ProductID']}, ";
jsArray .= "name1: \"{$row['Name1']}\", ";
jsArray .= "name2: \"{$row['Name2']}\", ";
jsArray .= "name3: \"{$row['Name3']}\", ";
jsArray .= "name4: \"{$row['Name4']}\"}";
echo "<option value='$rowmod'>$row[ProductElement]</option>";
}
?>
然后,当您可以安全地放置 JavaScript 时(比如在结束<form>
标记之后,请执行以下操作:
<? php
echo <<< endJS
<script language="JavaScript">
var contactInfo = new Array($jsArray);
NOTE: PASTE THE FUNCTION FROM STEP 4 HERE
</script>
endJS;
?>
这里的代码中可能有一两个错误,因此可能需要进行一些调试。