【发布时间】:2012-10-02 19:13:32
【问题描述】:
我试图在这里避免重复,因为在 SO 周围的任何其他“jQuery 选择菜单”帖子中都没有看到我的问题得到解决。只是希望被推向正确的方向。
我有一组选择框,用于按品牌和型号搜索汽车的结果。当然,第一个<select> 是用于制造汽车的。这个<select> 元素在页面加载时使用 PHP 填充。选择 Make 后,将通过 AJAX 传递 makeID 以检索与所选 Make 相关的模型集。
这一切都很好,我的问题是,当我对我的 Make 列表进行多项选择时,它永远不会刷新第二个 <select> 框,因此将模型附加到第二个 <select> 框的许多不同品牌中。
如何刷新第二个<select> 框以仅显示与第一个<select> 框的选择相关的当前结果。
我的 HTML:
<form method="post" action="">
<p>
<label for="make">Make</label>
<select name="make" id="make">
<?php foreach ($usedMakes->MakeResult as $MakeResult) { ?>
<option value="<?php echo $MakeResult->makeId; ?>"><?php echo $MakeResult->makeName; ?></option>
<?php } ?>
</select>
</p>
<p>
<label for="model">Model</label>
<select name="model" id="model">
<option value="" selected>Make a Selection</option>
</select>
</p>
<p>
<button name="submit" id="submit"> Submit </button>
</p>
</form>
我的 JavaScript:
$("#make").change(function() {
var makeId = $(this).val();
$.ajax({
url: "process.inc.php?makeId=" + makeId,
type: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
for(i = 0 ; i < data.length; i++) {
var modelId = data[i].ModelResult.modelId;
var modelName = data[i].ModelResult.modelName;
var response = "<option value=\"" + modelId + "\">" + modelName + "</option>";
var appendedData = $(response).insertAfter($("#model option:first-child"));
$("#model option:first-child").data(appendedData);
};
}
});
});
【问题讨论】:
-
在添加更多选项之前,您必须删除 select 中的所有选项子元素。
标签: javascript jquery ajax forms onchange