【问题标题】:Drop-down script in multiple menus多个菜单中的下拉脚本
【发布时间】:2011-06-25 00:32:12
【问题描述】:

找不到错误。我有三个连接到 SQL 服务器的下拉菜单。当我加载页面时,第一个下拉列表已经填满。从第一个下拉列表中选择一个值后,页面从脚本调用函数“reload(form)”,并在第二个值中显示新索引。直到那里它工作正常,但是当我从第二个下拉列表中选择一个值以调用函数“reload2(form)”时,它会刷新整个页面并且从第一个和第二个下拉列表中选择的值消失并且dird下拉列表没有'不显示任何东西。 这是脚本代码:

    <script language=JavaScript>
    function reload(form)
    {
    var  val=document.form.cliente.options[form.cliente.options.selectedIndex].value;
    self.location='indexmm.php?cliente=' + val ;
    }
    function reload2(form)
    {
    var val=document.form.cliente.options[form.cliente.options.selectedIndex].value;
    var val2=document.form.equipos.options[form.equipos.options.selectedIndex].value;
    self.location='indexmm.php?cliente=' + val + '&equipos=' + val2 ;
    }
    </script>

这是我的 php 代码:

    <form method="post" name="form" id="form" action="post.php"> 

<h1>Cliente:
<?php
    echo "<select name='cliente' onchange=\"reload(this.form)\"><option value=''>Seleccione...</option>";   
    while($busq1 = mysql_fetch_array($consultacliente)) { 
        if($busq1['IdCln']==@$cliente){echo utf8_encode("<option selected value='$busq[IdCln]'>$busq1[Cliente]</option>"."<BR>");}
        else{echo utf8_encode("<option value='$busq1[IdCln]'>$busq1[Cliente]</option>");}
        }   
    echo "</select>"
?> 
</h1>


<h1>Equipos:</br></h1>
<?php
echo "<select name='equipos' size='5' style='width:400px' onchange=\"reload2(this.form)\">";
    while($busq3 = mysql_fetch_array($consultaequipos)) {
        if($busq3['IdGn']==@$refaccioness){
            echo utf8_encode("<option selected value='$busq3[IdGn]'>$busq3[Generador]</option>"."<BR>");}
        else{echo utf8_encode("<option value='$busq3[IdGn]'>$busq3[Generador]</option>");}
    }   
echo "</select>"
?>
</h1>

<h1>Refacciones:</br></h1>
<?php
echo "<select name='refacciones' size='20' style='width:400px'>";
    while($busq4 = mysql_fetch_array($consultarefac)) { 
        echo utf8_encode("<option value='$busq4[Descripcion]'>$busq2[Descripcion]</option>");
    }
echo "</select>"
?>

变量 $consultarefac、$consultacliente、$consultaequipos 是 SQL 查询。 有什么建议吗?

【问题讨论】:

  • 我想知道您为什么在equipos select 的代码中使用“if($busq3['IdGn']==@$refaccioness){”,以及为什么您没有类似的代码重新选择的代码。
  • 在 if($busq3['IdGn']==@$refacciones) 语句中,我使用变量 $refacciones 从客户端获取以前的数据,以便在下一个 sql 中使用它查询,我的意思是将一个表与另一个表关联,那是因为我没有发布 sql 代码查询。在 refacciones selct 的情况下,这是因为它是最后一个下拉列表或列表,不需要与另一个语句、查询或变量相关。

标签: php javascript sql


【解决方案1】:

我建议不要在每次有人更改下拉列表时重新加载页面。我建议只使用 AJAX 更新当前下拉列表下方的下拉列表。

简单的 AJAX 调用将用 html 的 sn-p 替换围绕以下下拉列表的 div。第一次选择将替换 div 'second' 的内容(这将包括清除第三个下拉菜单。第二次选择将替换 div 'third' 的内容。

您使用 ajax 抓取的页面将仅返回相应部分的 html sn-p。替换函数将对相应的页面使用 ajax 来替换相应 div 的内容。

<div id="first">
    <select name=first onchange="replace1()"></select>
    <div id="second">
        <select name=second onchange="replace2()"></select>
        <div id="third">
            <select name=third></select>
        </div>
    </div>
</div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2012-01-22
    • 2011-07-21
    • 1970-01-01
    • 2017-12-07
    相关资源
    最近更新 更多