我正在尝试创建一个智能表单,它会自动限制第二个下拉框的可用选项。
背景: 我正在创建一个票务系统,我希望用户从“站点选择”下拉列表中选择一个站点,然后“用户选择”下拉列表将只包含链接到第一个下拉列表中所选站点的用户,所有从MySQL填充的信息。
未来: 然后,我想在“选择受影响的服务”
下列出与该用户关联的所有服务我的js很差。到目前为止,我已经能够通过搜索找到一些代码,允许我将用户的计算机ID写入文本字段。但我无法弄清楚如何捕获输出并查询计算机名称(不同的表)并将其显示为勾选框选项或使用相同的方法来限制下一批选择框。下面列出的所有代码我还没有清理,alpha阶段。
我意识到我可以仅使用PHP执行此操作,但我想在这里和那里完善我的编码。
显示下降时间:
<h3>Assign Site</h3>
<select id="site_add" name="site_add" style="width:217px; height:20px !important;">
<option value="-1"></option>';
$o = "SELECT * FROM company_sites WHERE company_id = " . $company_id . " ORDER BY sitename";
$rs = mysql_query($o);
$nr = mysql_num_rows($rs);
for ($i=0; $i<$nr; $i++) {
$r = mysql_fetch_array($rs);
echo '<option value="' . $r['id'] . '">' . $r['sitename'] . '</option>';
}
<h3>Assign User</h3>
<select id="comp_add" name="comp_add_1" style="width:217px; height:20px !important;">
<option value=""></option>';
$o = "SELECT * FROM company_staff WHERE company_id = " . $company_id . " ORDER BY id DESC";
$rs = mysql_query($o);
$nr = mysql_num_rows($rs);
for ($i=0; $i<$nr; $i++) {
$r = mysql_fetch_array($rs);
$user_computer_id = $r['computer_id'];
echo '<option value="' . $r['id'] . '">' . $r['firstname'] . ' ' . $r['lastname'] . '</option>';
}
当前JS将所选用户的计算机ID输出到文本字段:
<script type="text/javascript">
window.onload=function() { attachBehaviors(); };
//
function attachBehaviors() {
document.getElementById(\'person\').onchange=function() {
loadUser(this.options[this.selectedIndex].value); // <-- check this, may be incorrect
}
}
function loadUser(optionvalue) {
// Always set a default
if (optionvalue==\'\') {
return;
}
opts = optionvalue.split(\':\');
var name = opts[0];
var email = opts[1];
document.getElementById(\'computer_id\').value=name;
}
</script>
<select name="person" id="person">
<option value=""></option>';
$result=mysql_query("SELECT * FROM company_staff");
while($row=mysql_fetch_array($result)) {
$submit_firstname = $row['firstname'];
$submit_lastname = $row['lastname'];
$submit_staff_id = $row['id'];
$submit_computer_id = $row['computer_id'];
echo '<option value="' . $submit_staff_id . '">' . $submit_firstname . ' ' . $submit_lastname . '</option>\n';
}
echo '
</select>
<input type="text" id="computer_id" name="name" placeholder="name" />
';
非常感谢任何有关如何实现这一目标的建议!
提前致谢!
答案 0 :(得分:1)
你需要AJAX,它是PHP和JS的结合。 (javascript从服务器请求数据,php处理请求,返回数据)。
您需要练习一点AJAX以了解如何制作此选择框。
这是理论上的过程:
为它创建一个onchange事件处理程序,它将调用服务器以获取信息。
.. ..选项
此updateNewDropDown函数将从您选择的服务器响应中获取值,并通过PHP获取第二个选择菜单的新数据,并使用提供的数据AJAX响应创建新的选择菜单。
< / LI> 醇>AJAX TUTORIALS:
http://api.jquery.com/jQuery.ajax/ http://www.w3schools.com/ajax/default.asp