加载页面时将值发布到从属下拉菜单

时间:2016-01-25 13:34:02

标签: javascript jquery drop-down-menu jquery-select2-4 select2

搜索此网站后,找到了一种方法,可以轻松地使用ajax创建依赖下拉菜单(之前使用过“kartik依赖下拉列表”插件,但它不能与select2一起使用,因此需要自定义解决方案)。当从父下拉列表中选择任何选项时,我可以完全依赖(子)下拉菜单,但是在加载页面时无法显示相关下拉列表(需要先在父下拉列表中单击某个选项)。这是代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dynamic Dependent Select Box</title>
<link href="css/styles.css" rel="stylesheet" />
<script src="ajax/jquery.min.js"></script>
<script src="ajax/plugins/forms/select2.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$(".parent1").select2();
$(".child1").select2();

$(".parent1").change(function()
{
var id=$(this).val();
var dataString = 'id='+ id;

$.ajax
({
type: "POST",
url: "test_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$("select.child1").html(html);
}
});
});
});
</script>
</head>
<body>
<select name="parent1" class="parent1">
<option value="1">something</option>
<option value="2" selected>something good</option>
<option value="3">who cares</option>
</select>
<select name="child1" class="child1">
</select>
</body>
</html>

这是test_ajax.php来源:

    <?php
if (!isset($_POST['id']))
{
    exit();
}
else
{
    echo "<option value=\"".$_POST['id']."\">".$_POST['id']."</option>";
}
?>
<option value="aaa">aaa</option><option value="bbb">bbb</option><option value="ccc">ccc</option>

我应该如何修改代码,以便在加载页面时将初始值(<option value="2" selected>something good</option>)发布到test_ajax.php(因此页面加载时子项下拉列表不为空)?

在此页面上找到了一些示例,但它们是针对select2的3.x版本,并且示例中使用的函数在版本4.x中已弃用

1 个答案:

答案 0 :(得分:1)

您可以手动触发change事件,这会导致您的AJAX请求被发送。

if ($('select.parent1').val()) {
  $('select.parent1').trigger('change');
}