我需要能够使用多个选择框在客户端归档一个长列表。
我已经使用一个选择框成功地做到了这一点。
<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]
- 别克 [通用]
Buick [GM]
如果我然后使用第二个选择框选择<li>
将更改为仅显示
- 别克 [通用]
这就是我想要的。但是我发现如果第二个框选择本田它将显示
- 思域 [本田]
- 雅阁[本田]
我的问题是如何将两者链接在一起,以便同时使用通用和本田?
没有任何过滤器的列表是:
- 雪佛兰 [GM]
- 别克 [通用]
- 别克 [通用]
- 别克 [通用]
- 思域 [本田]
- 雅阁[本田]
- 焦点[福特]
当我们从第一个过滤器中选择 GM 时,它会显示
- 雪佛兰 [GM]
- 别克 [通用]
- 别克 [通用]
- 别克 [通用]
因此,如果我们从第二个过滤器中选择“别克 [GM]”,列表现在将显示
- 别克 [通用]
- 别克 [通用]
- 别克 [通用]
这是正确的,但第二个过滤器设置为福特列表将显示
- 焦点[福特]
所以过滤器不能协同工作 </p>