使用数据实时搜索忽略文本过滤器刷新选择器
Refreshing a selectpicker with data-live-search ignoring text filter
我有一个很重的倍数 select,因此我目前正在为一个 select 选择器倍数添加选项,在用户输入时通过 Ajax 进行数据实时搜索。
刷新正确地更新了选项,但不幸的是它也忽略了当前的数据实时搜索文本。
这是我的做法:
初始化 select没有选项的选择器
当用户输入时,我动态添加一个选项然后使用刷新方法(正常工作)
如果用户用其他内容替换他的文本,它将动态添加其他选项,但也会显示第一个选项(与用户文本过滤器无关)
$('#special_selectpicker').parent().find('input.form-control').on('input', function() {
if ( $(this).val().length >= 3 ){
$.ajax({
url: "/get_objects/json/app_name/item",
data: {
filters: JSON.stringify([
{
column: "name__icontains",
value: $(this).val()
}
]),
fields: JSON.stringify(['uppercase_name'])
},
success: function (result) {
item_added = false
json_result = JSON.parse(result)
for ( const id in json_result['results'] ){
item = json_result['results'][id]
if( !option_cities.includes(item['pk']) ){
option_cities.push(item['pk'])
$("#special_selectpicker").append('<option value="' + item['pk'] + '">' + item['uppercase_name'] + '</option>')
item_added = true
}
}
if( item_added ){
$('#special_selectpicker').selectpicker('refresh');
}
}
});
}
});
我找不到让 selectpicker 根据文本过滤器重新过滤的方法。我做错了什么吗?
因为我的函数没有得到任何新的结果,两次给出相同的文本,如果我有一个新的结果,我触发了 select-picker 事件的事件输入,它起到了作用。
我有一个很重的倍数 select,因此我目前正在为一个 select 选择器倍数添加选项,在用户输入时通过 Ajax 进行数据实时搜索。 刷新正确地更新了选项,但不幸的是它也忽略了当前的数据实时搜索文本。
这是我的做法:
初始化 select没有选项的选择器
当用户输入时,我动态添加一个选项然后使用刷新方法(正常工作)
如果用户用其他内容替换他的文本,它将动态添加其他选项,但也会显示第一个选项(与用户文本过滤器无关)
$('#special_selectpicker').parent().find('input.form-control').on('input', function() {
if ( $(this).val().length >= 3 ){
$.ajax({
url: "/get_objects/json/app_name/item",
data: {
filters: JSON.stringify([
{
column: "name__icontains",
value: $(this).val()
}
]),
fields: JSON.stringify(['uppercase_name'])
},
success: function (result) {
item_added = false
json_result = JSON.parse(result)
for ( const id in json_result['results'] ){
item = json_result['results'][id]
if( !option_cities.includes(item['pk']) ){
option_cities.push(item['pk'])
$("#special_selectpicker").append('<option value="' + item['pk'] + '">' + item['uppercase_name'] + '</option>')
item_added = true
}
}
if( item_added ){
$('#special_selectpicker').selectpicker('refresh');
}
}
});
}
});
我找不到让 selectpicker 根据文本过滤器重新过滤的方法。我做错了什么吗?
因为我的函数没有得到任何新的结果,两次给出相同的文本,如果我有一个新的结果,我触发了 select-picker 事件的事件输入,它起到了作用。