【发布时间】:2016-08-03 19:02:39
【问题描述】:
我有以下数据集
array:4 [
"data" => array:2 [
2015 => array:2 [
"english" => array:1 [
"chips" => array:1 [
0 => "img1.png"
]
]
"french" => array:1 [
"mussles" => array:1 [
0 => "img1.png"
]
]
]
2016 => array:2 [
"indian" => array:1 [
"madras" => array:1 [
0 => "img1.png"
]
]
"italien" => array:1 [
"pasta" => array:1 [
0 => "img1.png"
]
]
]
]
]
为了正确显示正确的数据,我执行以下操作
<select id="year" class="form-control">
@foreach($fileData["data"] as $year => $countries)
<option value="{{ $year }}">{{ $year }}</option>
@endforeach
</select>
<select id="country" class="form-control hide">
@foreach($fileData["data"] as $year => $countries)
@foreach ($countries as $country => $dishes)
<option class="year-{{ $year }} hide" value="{{ $country }}">{{ $country }}</option>
@endforeach
@endforeach
</select>
<select id="dish" class="form-control hide">
@foreach($fileData["data"] as $year => $countries)
@foreach ($countries as $country => $dishes)
@foreach ($dishes as $dish => $images)
<option class="year-{{ $year }} country-{{ $country }} hide" value="{{ $dish }}">{{ $dish }}</option>
@endforeach
@endforeach
@endforeach
</select>
所以第二个和第三个选择被隐藏,直到前一个被选中。
在 JavaScript 中我会这样做
var getSelectedYear = function() {
return $("#year option:selected").val();
}
var getSelectedCountry = function() {
return $("#country option:selected").val();
}
$('#year').change(function() {
$("#country option.year-" + getSelectedYear()).removeClass('hide');
$("#country").removeClass('hide');
})
$('#country').change(function() {
$("#dish option.year-" + getSelectedYear() + ".country-" + getSelectedCountry()).removeClass('hide');
$("#dish").removeClass('hide');
})
所以如果我在第一个选择中选择 2015,第二个选择将显示英语和法语。如果我然后选择英语,第三个选择将显示筹码。
这一切都很好。我的问题是这个。如果我选择 2015 年,英语和薯条,然后将英语更改为法语,则第三个选择选项现在显示薯条和 mussles 而不仅仅是 mussles。所以它工作正常,它按顺序完成,但是一旦你改变了一些东西,我需要在动态填充它们之前重置以下选择选项。
有什么办法可以做到吗?
【问题讨论】:
标签: javascript jquery