如何按多个项目搜索/过滤列表?
我正在寻找一个示例,或者可能是一个方法,用于通过键入文本框的多个项目来过滤/搜索项目列表。
我们假设我有一个列表:
- Coffee
- Tea
- Milk
- Water
- Juice
我想要的是输入(在文本框中)例如:牛奶;水;果汁(中间有分号),它返回三个项目。
$('li').filter(function() { ???? })
它可以是filter或其他jquery / js函数。
预先感谢您的任何帮助
编辑:
我忘了告诉它应该按最后一项的一部分进行搜索。 例如Coffe; Te – >返回Coffe和Tea
这是你可以实现这个目标的一种方法: –
$('input').keyup(function(){ var search = this.value.split(';'); $('ul li').each(function(index, element){ $(element).toggle(search.indexOf($(element).text()) >= 0); }); });
- Coffee
- Tea
- Milk
- Water
- Juice
试试这段代码:
$('input').on('keyup', function(){ var val = $(this).val().toLowerCase(); $('li').each(function() { var $this = $(this); var text = $this.text().toLowerCase(); if ( val.indexOf(text) > -1 ) { $this.show(); } else { $this.hide(); } }); });
演示: http : //jsbin.com/foqagadewo/edit?html,js,output
您可能需要修改Jquery自动完成function才能为您执行此操作https://jqueryui.com/autocomplete/
您还可以使用“multiple”属性创建HTML select元素,并将输入字符串推入数组,然后选择select> option元素中的项目
你可以使用,这将返回匹配的li。
var items= textboxValue.split(";") var a= $('ul li').filter(function() { return items.indexOf($(this).text()) > -1 ; });
你应该试试这个。 请运行我想要显示的代码段和输入。
$(document).ready(function() { }); function filterItems(thisobj) { $("ul li").hide(); $("ul li").filter(function(i) { return ($(thisobj).val().split(';').indexOf($(this).text())> -1); }).show(); }
- Coffee
- Tea
- Milk
- Water
- Juice
请查看文档
//bind chosen $(".chosen-select").chosen({no_results_text: "Oops, nothing found!"}); $('.chosen-select').on('change', function(evt, params) { alert($(".chosen-select").val()); });