php - JavaScript 计数与 PHP 循环一致

标签 php javascript

我有一个带有两个下拉菜单的页面。第一个下拉菜单中选择的选项控制第二个下拉菜单中显示的内容。

当下拉菜单仅使用一次时,代码非常简单 - 但我希望将每组下拉菜单重复次。

下拉菜单的 ID 为 experience[<?php echo $i; ?>][manufacturer] 。下拉菜单二分配了 ID experience[<?php echo $i; ?>][type] .

本质上,我所拥有的是:

<select id="experience[1][manufacturer]">...</select>
<select id="experience[2][manufacturer]">...</select>
<select id="experience[3][manufacturer]">...</select>
<select id="experience[4][manufacturer]">...</select>

...后跟:

<select id="experience[1][type]">...</select>
<select id="experience[2][type]">...</select>
<select id="experience[3][type]">...</select>
<select id="experience[4][type]">...</select>

我想知道:获得 <?php echo $i; ?> 等价物的最佳方法是什么?到用于输出第二个下拉菜单内容的 JavaScript block 中? (我知道我不能像这样在 JavaScript 中直接使用 PHP - 我只是留下 <?php echo $i; ?> 片段来指示我需要在哪里输出数字 1、2、3、4 等。

感谢您的帮助!

代码:

<form>

<?php

$i=1;

while($i<=4) {

?>

    <select id="experience[<?php echo $i; ?>][manufacturer]">
    <option value="Ford">Ford</option>
    <option value="Honda">Honda</option>
    <option value="Mercedes">Mercedes</option>
    </select>

    <select id="experience[<?php echo $i; ?>][type]">

    <script type='text/javascript'>
    $(document).ready(function() {
        $("#experience[<?php echo $i; ?>][manufacturer]").change(function() {
            $("#experience[<?php echo $i; ?>][type]").load("get_type.php?choice=" + $("#experience[<?php echo $i; ?>][manufacturer]").val());
        });
    });
    </script>

    </select>

<?php

$i++;

}

?>

</form>

修改后的代码:

<form>

<script type='text/javascript'>
    $(document).ready(function() {
        $(".experienceManufacturer").change(function() {
            $("#experience["+$(this).attr('data-id')+"][type]").load("get_type.php?choice=" + $(this).val());
        });
    });
    </script>

<?php $i=1;
while($i<=4) { ?>

    <select id="experience[<?php echo $i; ?>][manufacturer]" class="experienceManufacturer" data-id="<?php echo $i; ?>">
    <option value="Ford">Ford</option>
    <option value="Honda">Honda</option>
    <option value="Mercedes">Mercedes</option>
    </select>

    <select id="experience[<?php echo $i; ?>][type]">
    </select>

<?php
$i++;
}
?>

</form>

最佳答案

您不需要在 PHP 循环中包含 script 元素。

相反,您应该向所有常见的 select 元素添加类似的类。类似于 class="experience"

然后,使用单个脚本元素,您可以将事件附加到所有 select:

<script type='text/javascript'>
    $(document).ready(function() {
        $("select.experience").each(function(i,element){
            // here element is the actual item from the selected set, i is its index
            $(element).on("change", function() {
                $("#experience[" + i + "][type]").load("get_type.php?choice=" + $(element).val());
            });
        });
    });
</script>

关于php - JavaScript 计数与 PHP 循环一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17708828/

相关文章:

PHP SQL 连接

php - 什么是存储库、服务和操作/ Controller ?

php - Apache 崩溃报告 - is_closing_session() : no DBUS_SESSION_BUS_ADDRESS in environment

javascript - 在php中计算每月包(产品)价格

php - 将图片上传到 Facebook

php - 如何在php中创建动态json?

javascript - 将 javascript 数组传递给 php

javascript - JQuery使元素重复闪烁

javascript - 在 JavaScript 中拆分此字符串

javascript - AngularJS:如何在呈现 ng-repeat 的过程中保持 UI 响应输入