我目前正在尝试使JavaScript中的过滤器功能允许您从预定义列表中进行选择以缩小所选选项的范围。多个如果和/或条件
该过滤器有多个选项,它足够简单,可以根据过滤器中的匹配缩小列表的范围,当时只有一个选项。但是,如果选择多个选项,我想根据匹配来缩小列表的范围。
示例:用户输入“Hello”作为关键字“Company”的过滤选项,这将导致选择仅匹配Company == Hello。如果用户然后选择了第二个选项,即“位置”关键字的“美好的一天”,那么如果关键“公司”和“位置”匹配,我只想缩小列表的范围。
如果没有真正编写任何代码,那么我知道这可以用很多AND OR来完成,但我希望有一个更方便的方法来做到这一点,我没有看到。
var position = $('select[name=order_position]').select2('val');
var industry = $('select[name=order_industry]').select2('val');
var company = $('select[name=order_company]').select2('val');
$('.mail_select_prospect').each(function() {
var prospect_existing = $(this).attr('data-existing');
var prospect_position = $(this).attr('data-position');
var prospect_industry = $(this).attr('data-industry');
var prospect_company = $(this).attr('data-company');
var self = $(this);
if(
($.inArray(prospect_position, position) !== -1) ||
($.inArray(prospect_industry, industry) !== -1) ||
($.inArray(prospect_company, company) !== -1) ||
($('input[name=order_existing]').is(':checked') && prospect_existing == 1) ||
($('input[name=order_nonexisting]').is(':checked') && prospect_existing == 2)
) {
self.prop('checked', true);
} else {
self.prop('checked', false);
}
});
这是我目前有,这个发现匹配基于一个关键的匹配,而我只想要符合所有的过滤器的选择的结果。不只是一个。
使用& &整个方式,将强制用户在过滤器踢(显然),我希望它是可以选择一个关键字,并与那些谁拥有该关键字或获得比赛之前选择在每个过滤选项的东西如果选择了两个关键字,我只希望两个关键字都存在的匹配。
有什么建议吗?
当然,这是可能的,但我们需要知道在什么情况下,以帮助你。如果根据输入值生成一系列事物,那么只有在选择了一个值的情况下才能生成每个部分,因此选择的部分越多,生成的部分越多。你能发布更多的代码吗? –
更新了代码:) – Freddy