使用URL变量激活依赖下拉列表中的第一个选项并提示OnChange事件

时间:2016-07-13 17:25:50

标签: javascript php jquery html ajax

项目背景 我有一个功能正常的搜索表单,它有5个相关的下拉列表,用于深入挖掘数据。在我的dim_id页面上选择了第一个变量product_requestOnChange将变量发送到我的ajax处理程序,以使用相关数据填充下一个选择cap_id。这将继续发生,返回和第四,直到选择了5个参数,并且仅使用一个选项激活第六个框productnumber

总的来说,如果有人冷静地进入这个页面,它的功能就完美了。

我撞墙的地方: 现在我们希望能够从父产品页面进入带有dim_id的网页,这样他们就可以使用其他四个下拉菜单选择其变体。

我认为需要发生的是dim_id需要像这样构建到网址中:

product_request.php?dim_id=1

以某种方式跳过这样的过程:

1)在第一个下拉列表中进行正确选择

2)自动提示OnChange事件转到我的Ajax处理程序,用相关数据填充第二个选择框cap_id

对不起,我没有代码片段,老实说,我不知道在这个功能发生的地方甚至开始。

1 个答案:

答案 0 :(得分:0)

请记住这是一种可能的解决方案。您已建议使用URL参数进行数据传输,这是一个好主意。在PHP中,可以通过$_GET超全局访问URL参数。

在示例字符串http://example.com/product_request.php?dim_id=1中,您可以通过访问$var = $_GET["dim_id"]来访问该参数。如果设置了此参数,则您需要将选项添加到第一个选择框中,方法是简单地使用PHP回显它或滚动列表并使用Javascript选择它。然后,您可以回显一些Javascript代码,为选择框调用onChange处理程序,就像它被选中一样。这将使其使用值预填充第二个框。草稿可能如下:

<?php 
    $have_dID = false;
    if (isset($_GET["dim_id"])) {
        $dID = $_GET["dim_id"]
        $have_dID = true;
    }
?>
<script>
    function someProcessingFunction() {
        // Make some ajax call based on value of #dim_id select box...
        // Add options from ajax call to #cap_1
        // Enable #cap_1
    }
</script>
<select id="dim_1" name="dim_1" onChange="someProcessingFunction()">
    <?php
    if ($have_dID) {
    ?>
        <option value="<?php echo $dID; ?>">Parent option</option>
    <?php
    }
    ?>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
</select>
<select id="cap_1" name="cap_1" disabled="disabled">
    <!-- Options to be filled by function -->
</select>
<?php
    if ($have_dID) {
        ?>
        <script> someProcessingFunction() </script>
        <?php
    }
?>