我使用了一个原型插件,它在您键入时过滤下拉列表的内容。因此,例如,如果您在文本框中键入“cat”,则只有包含子字符串“cat”的项目将作为选项留在下拉列表中。
有谁知道可以做到这一点的jquery插件?
我使用了一个原型插件,它在您键入时过滤下拉列表的内容。因此,例如,如果您在文本框中键入“cat”,则只有包含子字符串“cat”的项目将作为选项留在下拉列表中。
有谁知道可以做到这一点的jquery插件?
我只是在寻找类似的东西,而我需要的最好的东西似乎是JQuery UI MultiSelect。它将多选框变成一个非常漂亮的双列表视图,并在主列表上进行实时过滤。
编辑:新的发展!
“ Chosen是一个 JavaScript 插件,它使长而笨重的选择框更加用户友好。它目前在 jQuery 和 Prototype 两种风格中都可用。”
在可预见的将来,我将在所有选择使用项目中完全使用Chosen 。
Select2是 Chosen 的一个相当新的分支,并具有更多的功能(例如 AJAX + 用于单个项目的自定义 HTML)。
几年前我写了一个小脚本来做到这一点。很可能,它可以很容易地打包为一个 jQuery 插件。不客气。
如果您想查看那里的代码,我也会在我的PHP 函数参考仪表板小部件中执行此操作。
jQuery自动完成插件
编辑:我最初链接到错误的自动完成插件。
$(document).ready(function() {
$("#myInput").on("keyup", function() {
var value = $(this).val().toLowerCase();
$("#filter *").filter(function() {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<h2>Filter</h2>
<input id="myInput" type="text" placeholder="Search..">
<br><br>
<div class="filter-by">
<span>Filter by:</span>
<select class="status-filter" id="filter">
<option value="">All</option>
<option value="paid">Paid</option>
<option value="accepted">Accepted</option>
<option value="pending">Pending</option>
<option value="rejected">Rejected</option>
</select>
</div>
尝试基于实际选择框并在选项文本中间匹配的“jquery 选项过滤器”:http: //plugins.jquery.com/project/jquery_options_filter
为自我主义
我只是快速而肮脏地实现了这个功能。它使用一些全局变量,您可能希望改进实现以删除这些变量。
这里的“#xsca_member_filter”是作为文本输入的过滤器,“#members”是选择输入。
$('documenet').ready(function(){
init();
$('#xsca_member_filter').keyup(function(){
filter($(this));
});
});
//save all available options with their values and the empty option.
init = function(){
options = new Object();
$('#owner option').each(function(){
var obj = $(this);
if(obj.attr("value") != "")
options[obj.attr('value')] = obj.html();
else
emptyOption = obj.html();
});
selObj = $('#owner');
};
filter = function(elem){
var filter = elem.val();
var selected = $('#owner option:selected').val();
//delete all options and add the empty option
selObj.html("");
selObj.append("<option> "+emptyOption+" </option>");
//add all options conaining the filter string
for(value in options){
var option = options[value];
if((options[value]).indexOf(filter) != -1){
selObj.append("<option value='"+value+"'> "+options[value]+" </option>");
}
}
//select the previously selected option
$("#owner option[value = '"+selected+"']").prop("selected", true);
}