List.JS - 使用逗号分隔值过滤

Posted

技术标签:

【中文标题】List.JS - 使用逗号分隔值过滤【英文标题】:List.JS - Filter with comma separated values 【发布时间】:2020-10-20 07:29:55 【问题描述】:

我正在尝试创建一个下拉列表以根据日期进行过滤,但我希望能够用逗号分隔日期而不是将每个字段初始化为单独的过滤器,当您考虑数百个日期时这会很慢,并且每个列表项都有 30 多个日期。

我想也许 list.js 支持逗号分隔的字段,但我在网上找不到任何明显的解决方案。

这是一个简单的代码笔,代码使用单个字段:

https://codepen.io/mauricekindermann/pen/QWyqzQL

这个:<span class="stat filter_dates">1999,2099,2199</span>

而不是这个:<span class="stat filter_dates">1999</span>

这可能吗?还是我需要将每个日期作为单独的过滤器启动?

【问题讨论】:

【参考方案1】:

我没有得到任何答案,也找不到明显的灵感。所以最终结果使用了这个方法(一个php文件里面的JS脚本)

<script>
    var options = 
    valueNames: [ 
        'id',
        <?
        while($item= mysqli_fetch_array($query))
        
        ?>
        'filter_<?=$item['id']?>',
        <?
        
        ?>
    ]
;

$(document).ready(function()
    
    if($('#filter').length > 0)
    
        $('#filter').change(function ()
        
            var selection = this.value;
            <?
            $i=0;
            mysqli_data_seek($query, 0);
            while($item= mysqli_fetch_array($query))
            
                if($i==0)
                    $type='if';
                 else 
                    $type='else if';
                
                ?>
                <?=$type?>(selection == '<?=$item['id']?>')
                
                    userList.filter(function (item) 
                        return (item.values().<?='filter_'.$item['id']?> == selection);
                    );
                
                <?
            $i++;
            
            if($i > 0)
            ?>
                else 
                    userList.filter();
                
            <?
            
            ?>
        );
    ;
);
</script>

【讨论】:

以上是关于List.JS - 使用逗号分隔值过滤的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中过滤逗号分隔的字符串

Where子句Mysql中的逗号分隔字符串参数过滤器

将数组存储为逗号分隔,如何使用 LINQ 进行查询?

将逗号分隔值转换为双引号逗号分隔字符串

PHP:使用逗号分隔值创建字符串,但字符串末尾没有逗号

使用 between 子句搜索逗号分隔值