我现在正在实现一个系统,我想实现一个组合框选择过程,但我不知道如何实现它,所以请你们帮忙?
我的情况是这样的,假设我们有两个组合框选择列表,左边一个和右边一个,左边一个是主要的,右边是左边的孩子。
当我从左侧组合框中选择一个项目时,右侧组合框的内容应根据左侧组合框的内容进行更改,
例如:如果我选择品牌,让我们考虑一下手机
Nokia
从左侧组合框右侧组合框的内容应更改为
C6-01
E7-00
5232
X3-02
C1-01
C7-00
5228
C5-03
5250
6120ci
E5-00
E73
明智的。请帮我实现这种场景!
任何教程链接,用于理解场景的示例代码更好!
的问候, 兰加纳
答案 0 :(得分:3)
诀窍是订阅更改事件并相应地重置第二个框的内容。
HTML:
<select id="brand">
<option value="">- select -</option>
<option value="nokia">Nokia</option>
<option value="apple">Apple</option>
</select>
<select id="type"></select>
JavaScript(准备就绪):
var selectBrand = $("#brand");
var selectType = $("#type");
var optionsList = {
nokia: [
"C6-01",
"E7-00"
],
apple: [
"iPhone 3",
"iPhone 3G",
"iPhone 4"
]
};
selectBrand.change(function() {
var brand = selectBrand.val();
var options = optionsList[brand];
var html;
if (options) {
html = '<option value="">- select -</option>';
$.each(options, function(index, value) {
html += '<option value="' + value + '">' + value + '</option>';
});
} else {
html = '<option value="">Select a brand</option>';
}
selectType.html(html);
}).change();
的完整示例
答案 1 :(得分:2)
这有两个方面。首先,服务器将为您需要的类别返回JSON,其次是前端的代码。
<?php
// Do what you need to
$modelsArray = getModelsForBrand($_REQUEST['brand']);
echo json_encode($modelsArray);
?>
这使用json_encode函数来获取用于获取模型的任何内容返回的数组上的JSON。我自己没有使用过这个功能,但看起来很简单。
然后你的jQuery看起来像这样:
$("#brandCombo").change(function(){
var chosenBrand = $(this).val(); // Get the value
$.getJSON('/your-php-file.php', { "brand" : chosenBrand }, function(request){
// Successful return from your PHP file
$("#modelCombo").empty();
// For each item returned, add it to your models combo box
$.each(request, function(i,item){
$("#modelCombo").append("<option value='" + item.value + "'>"+ item.name + "</option>");
});
});
});
在此示例中,brandCombo
是包含品牌的列表的ID,modelCombo
是模型应显示的列表的ID。当brandCombo
的值发生更改时,它会向您的PHP文件发出请求以获取JSON中的模型数组。然后它会遍历每个选项并为您的modelCombo
列表添加一个新选项。
我回答is here的类似问题,其中我提到了如何使用页面和列表框中的所有数据(隐藏/显示它们)或AJAX请求(如上例所示)。< / p>
另一个选项,如dyve的回答所示,是以JavaScript对象的形式获得页面上所需的所有信息。如果你想这样做,那么PHP json_encode
函数仍然可以使用(虽然你只需用你的所有数据调用它并将其放到页面上)。
答案 2 :(得分:1)