【发布时间】:2020-06-08 01:20:54
【问题描述】:
我有一个繁重的多项选择,因此我目前正在通过 Ajax 为 selectpicker multiple 添加选项,同时在用户键入时通过 Ajax 进行数据实时搜索。 刷新正在正确更新选项,但不幸的是它也忽略了当前的数据实时搜索文本。
这是我的做法:
初始化不带选项的选择器
当用户输入时,我动态添加一个选项然后使用刷新方法(正常工作)
如果用户将其文本替换为其他内容,它将动态添加其他选项,但也会显示第一个选项(与用户文本过滤器无关)
$('#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');
}
}
});
}
});
我找不到要求选择器根据文本过滤器重新过滤的方法。我是不是做错了什么?
【问题讨论】:
标签: javascript bootstrap-selectpicker