複数の選択ボックスを使用して、クライアント側で長いリストをファイリングできる必要があります。
1つの選択ボックスを使用してこれを成功させることができました。
<select id="company">
<option selected="true" >ALL</option>
<option>GM</option>
<option>Honda</option>
<option>Ford</option>
</select>
<select id="company2">
<option selected="true" >ALL</option>
<option>Buick [GM]</option>
<option>Honda</option>
<option>Ford</option>
</select>
<ul id="names" multiple="multiple" size="8">
<li>Chevy [GM]</li>
<li>Buick [GM]</li>
<li>Civic [Honda]</li>
<li>Accord [Honda]</li>
<li>Focus [Ford]</li>
</ul>
そして、スクリプト
var names = $('#names li').clone();
$('#company').change(function() {
var val = $(this).val();
$('#names').empty();
names.filter(function(idx, el) {
return val === 'ALL' || $(el).text().indexOf( val ) >= 0;
}).appendTo('#names');
$('#company2').change(function() {
var val = $(this).val();
$('#names').empty();
names.filter(function(idx, el) {
return val === 'ALL' || $(el).text().indexOf(val) >= 0;
}).appendTo('#names');
});
});
これはほぼ機能します。最初の選択ボックスで GM を選択すると、リスト<li>
が
- シボレー [GM]
- ビュイック [GM]
次に、2番目の選択ボックスを使用して選択Buick [GM]
すると、<li>
表示のみに変更されます
- ビュイック [GM]
それが私が欲しいものです。ただし、2番目のボックスでHondaを選択すると表示されることがわかりました
- シビック[ホンダ]
- アコード【ホンダ】
私の質問は、GM とホンダの両方を一緒に使用できるように、2 つを連結するにはどうすればよいかということです。
フィルタなしのリストは次のとおりです。
- シボレー [GM]
- ビュイック [GM]
- ビュイック [GM]
- ビュイック [GM]
- シビック[ホンダ]
- アコード【ホンダ】
- フォーカス[フォード]
最初のフィルターから GM を選択すると、それが表示されます
- シボレー [GM]
- ビュイック [GM]
- ビュイック [GM]
- ビュイック [GM]
したがって、2 番目のフィルターから「ビュイック [GM]」を選択すると、リストが表示されます。
- ビュイック [GM]
- ビュイック [GM]
- ビュイック [GM]
これは正しいですが、2 番目のフィルターが Ford に設定されていると、リストが表示されます
- フォーカス[フォード]
そのため、フィルターは一緒に機能していません</p>