根据其他DropDownList中的选定值填充第二个DropDownList

时间:2010-06-23 21:49:09

标签: php javascript ajax codeigniter drop-down-menu

我正在尝试根据您从第一个下拉列表中选择的值链接两个下拉列表。 我不知道如何做到这一点,所以如果你们能指出我的方向是正确的。

我想要做的是从第一个下拉列表中选择一个值,并根据其值显示第二个下拉列表中的一些选项。

我尝试这样做:

1 - 当第一个下拉列表的“OnChange”事件发生时,我调用一个重定向到控制器中的方法的javascript(例如:index / mainController / firstMethod / selectedValue)。

2 - 控制器中使用url helper的方法提取“selectedValue”来对第二个下拉列表的值进行数据库搜索。

3 - 相同的方法加载视图(具有ddl的视图)

这样做我丢失了第一个ddl的选定值。

我认为这不是正确的做法。

所以,再一次,我需要一些帮助。

2 个答案:

答案 0 :(得分:0)

听起来你想要AJAX。我不像以前那样依旧,但一般程序应该是这样的:

当用户在第一个下拉列表中选择某些内容时,它会触发一个javascript方法。 此方法获取该值,使用它来通过XMLHttpRequest GET查询页面。 XMLHttpRequest有一个回调函数,这样当数据返回时,您可以使用该数据填充第二个下拉列表。

让它调用的PHP页面返回新的下拉列表的完整HTML可能是最简单的(尽管有点奇怪)。他们只需要执行document.getElementById('secondDropdown').innerHTML = requestContent;

之类的操作

答案 1 :(得分:0)

如果您使用jQuery,则会更容易。

这是一个例子。

在主视图中你会有这样的一些:

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<script>
    $('#dropdown1').change(function(e) {
        $('#dropdown2').load('some_controller/some_function/'+this.value);
    });
</script>

<select name="dropdown1" id="dropdown1">
    <option value="1">option 1</option>
    <option value="2">option 2</option>
</select>

<select name="dropdown2" id="dropdown2"></select>
</body>

您在脚本中说,每当下拉列表更改其值时,您调用(在Ajax中)一个控制器函数,其参数中包含id。不要忘记包含jQuery文件。

在控制器中,您将拥有:

<?php
class some_controller extends Controller {

    function some_function($id) {
        $this->load->model('some_model');
        $data['options'] = $this->some_model->get_options($id);
        echo $this->load->view('view_dropdown2', $data, true);
    }
}
?>

因此,当调用此函数时,使用下拉列表ID调用模型函数,并使用选项回显视图。您必须将第3个参数设为true,以便视图作为var返回并且不会呈现。

在视图中:

<?php foreach($options->result() as $option): ?>
    <option value="<?php echo $option->id; ?>"><?php echo $option->title; ?></option>
<?php endforeach; ?>

您只是创建选项标签,因为已在主视图中创建了选择标记。