使用对象数组填充,并使用jQuery过滤级联下拉列表
Populating using object array and filtering cascade dropdown lists using jQuery
我有三个下拉列表,需要使用对象数组填充:
HTML:
<select id="crop"></select>
<select id="type"></select>
<select id="practice"></select>
数据(大得多):
var crops = [{
"Crop": "Annual Forage ",
"Type": " No Type Specified ",
"Practice": " Dec - Jan Index Interval",
"CropCode": 0332
}, {
"Crop": "Annual Forage ",
"Type": " No Type Specified ",
"Practice": " Feb - Mar Index Interval",
"CropCode": 0332
}, {
"Crop": "Annual Forage ",
"Type": " No Type Specified ",
"Practice": " Jan - Feb Index Interval",
"CropCode": 0332
}, {
"Crop": "Apiculture ",
"Type": " No Type Specified ",
"Practice": " Jun - Jul Index Interval",
"CropCode": 1191
}, {
"Crop": "Apiculture ",
"Type": " No Type Specified ",
"Practice": " Jan - Feb Index Interval",
"CropCode": 1191
}, {
"Crop": "Apiculture ",
"Type": " No Type Specified ",
"Practice": " Mar - Apr Index Interval",
"CropCode": 1191
}, {
"Crop": "Apiculture ",
"Type": " No Type Specified ",
"Practice": " Sep - Oct Index Interval",
"CropCode": 1191
}, {
"Crop": "Apples",
"Type": " Processing",
"Practice": " Irrigated",
"CropCode": 0054
}, {
"Crop": "Apples",
"Type": " Processing ",
"Practice": " Non-Irrigated",
"CropCode": 0054
}, {
"Crop": "Apples ",
"Type": " Processing ",
"Practice": " Non-Irrigated(Oc)",
"CropCode": 0054
}, {
"Crop": "Barley ",
"Type": " Spring Malting ",
"Practice": " Irrigated",
"CropCode": 0091
}];
首先,我消除了重复的Crop
,然后填充第一个下拉列表:
var options = unique(crops, "Crop");
var selectOptions = '';
for (i = 0; i < options.length; i++) {
selectOptions += '<option value="' + options[i] + '">' + options[i] + '</option>';
}
$('#crop').append(selectOptions).on('change', function () {
});
//Eliminates duplicates
function unique(list, attr) {
var result = [];
$.each(list, function (i, e) {
if ($.inArray(e[attr], result) == -1) result.push(e[attr]);
});
return result;
}
到目前为止,这一切都很好,但接下来我需要用相应的Type
填充第二个下拉列表,用其各自的Practice
填充第三个下拉列表。我被困在这里,我无法做到这一点。我需要在第一个下拉列表中进行选择时,比如说:"养蜂",只有"养蜂"的Type
和Practice
会填充第二个和第三个下拉列表。提前谢谢。
Fiddle
如果我理解正确,您可以迭代each
crop
对象,并检查crop
是否与下拉列表的值匹配,如果匹配,则相应地填充其他两个下拉列表:
$('#crop').append(selectOptions).on('change', function () {
var selected = $(this).find('option:selected').val();
$('#type, #practice').empty();
$.each(crops, function(i, v) {
if (v.Crop == selected) {
$('#type').append('<option value="'+v.Type+'">'+v.Type+'</option>');
$('#practice').append('<option value="'+v.Practice+'">'+v.Practice+'</option>');
}
});
});
示例Fiddle
相关文章:
- 如何使用jQuery选择下拉列表的值
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- Javascript按钮下拉列表
- 使用下拉列表过滤 ng 重复,而不复制下拉选项
- 有没有办法在打开下拉列表之前过滤typeahead.js的选择
- AngularJS-我应该如何处理多个动态下拉列表来过滤列表
- 如何将过滤器添加到我的表中,以允许选择多个复选框,以及从下拉列表中进行过滤
- 使用对象数组填充,并使用jQuery过滤级联下拉列表
- 使用jquery过滤下拉列表
- 将数组结果过滤到下拉列表中
- 如何通过免费文本和多个下拉列表过滤ng-repeat
- JavaScript:根据其他下拉列表的值过滤下拉列表
- 如何使用下拉列表过滤剑道UI MVC网格
- 从下拉列表中获取过滤后的数据,并显示在另一个下拉列表中
- 我应该如何创建一个项目列表,过滤下拉项目选择在引导
- 所有者下拉列表未过滤故事纸板
- 过滤剑道下拉列表以删除选项
- 过滤安全Qs下拉列表
- 根据另一个下拉列表的选择值,过滤并显示下拉列表的选项
- Ng-options在另一个下拉列表中按值过滤一个数据