0

我有以下代码选择框 div:

Make:<br> 
        <select name="Make">
        <option value = "Toyota">Toyota</option>
        <option value = "Honda">Honda</option>
    </select>


<div id="side_model">           
        Model:<br> 
        <select name="Model">
        <PHP CODE THAT SEARCHES DATABASE FOR ALL MODELS AVAILABLE AND LIST THEM AS OPTIONS ?>
    </select>
</div>

以及以下 Jquery:

<script>
jQuery(document).ready(function($){
    $('#Make').change(function() {
        $.get('dropdown.php',{make: $(this).val() },function(d){
            $('#side_model').html(d);
        });
    });
});
</script>

这是我的代码的一个非常简化的版本,但我所做的是,一旦选择了 make,我在 dropwdown php 中查询数据库并获取该 make 的所有模型,然后简单地填充列表

我的 dropdown.php 看起来像这样:

Model:<br> 
            <select name="Model">
            <PHP CODE THAT SEARCHES DATABASE FOR ALL MODELS THAT MATCH THE MAKE SELLECTED AND LIST THEM AS OPTIONS ?>
        </select>

好的,除了一个细节之外,代码几乎也按照预期的方式工作。

而不是 jQuery 用 dropdown.php 的内容替换 div,它只是在其顶部添加了额外的选择框。

如何获取 jQuery 代码以将模型选择框替换为动态生成的内容?

4

3 回答 3

2

.replaceWith()使用 jQuery 的函数可能更有意义(此处的文档):

首先,为您的选择元素添加一个 ID

<div id="side_model">           
    Model:<br> 
    <select id="Model" name="Model">
        <option value='0'>----</option>
    </select>
</div>

然后用来自的返回值替换它$.get()

jQuery(document).ready(function($){

$('#Make').change(function() {
        $.get('dropdown.php',{make: $(this).val() },function(d){
            $('#Model').replaceWith(d);
        });
    });
});

现在您需要在后台做的就是select完整地生成 (包括打开/关闭<select>标签)。

更新

我刚刚注意到你在打电话$("#Make").change(),但你从​​来没有给你的任何元素一个 ID 设置为“Make”。将 ID 属性添加到您的选择 where name="Make"

Make:<br> 
    <select id="Make" name="Make">
        <option value = "Toyota">Toyota</option>
        <option value = "Honda">Honda</option>
    </select>
于 2012-09-04T17:24:30.920 回答
1

我还注意到你打电话$('#make'),但你的选择只有这样的名字,所以请添加id="make"到你的选择

于 2012-09-04T17:41:02.543 回答
0

也许在重新填充之前清除 div?

$('#side_model').empty();

并再次填充

$('#side_model').append(/*your generated html code*/);

- 编辑 -

我还注意到您调用 $('#make'),但您的选择只有这样的名称,所以请在您的选择中添加 id="make"

于 2012-09-04T17:23:32.857 回答