Select2 以编程方式设置搜索词并打开包含相关结果的下拉列表(无 ajax 调用)
Select2 Programmatically set search terms and open dropdown with relevant results (no ajax calls)
我正在努力从select2中删除ajax调用。 我有一个填充下拉列表的对象静态列表。 我正在查看的工作流程是...
- 用户点击选择2
- 用户在搜索框中键入内容(并显示结果)
- 用户进行选择并加载新网页。
此时,我想用用户最初搜索的内容预填充搜索词,以便用户只需单击该框并预先填充他们从中选择的结果列表即可访问此页面。 但是,我不想篡改静态列表中的可用选项。
即
-
用户输入"ABC",他们有一个"ABC公司"ABC人"和"ABC实体"的列表可供选择。
-
用户选择"ABC 人员",以便将他们带到 ABC 人员页面。
-
用户看到这不是他们要查找的页面。
-
用户再次点击搜索框,select2 框在搜索词区域中有"ABC",并自动显示"ABC 公司"、"ABC 人员"和"ABC 实体"列表(就像他们刚刚搜索"ABC"一样)。
公司"XYZ人"XYZ实体"的新列表,而无需进行任何ajax调用。
目前,我可以通过编程方式设置搜索词值,但我无法弄清楚如何在 .select2-input 框上触发更改事件以获取打开和加载的结果。
为了填充选择框和触发器,我们需要这个:
<select id="e1" style="width:300px;">
<optgroup label="A1 comps">
<option value="A1">AAA 1</option>
<option value="A2">AAA 2</option>
<option value="A#">AAA 3</option>
<option value="A4">AAA 4</option>
</optgroup>
<optgroup label="B1 comps">
<option value="B1">BBB 1</option>
<option value="B2">BBB 2</option>
<option value="B3">BBB 3</option>
<option value="B4">BBB 4</option>
</optgroup>
</select>
<script>
$(document).ready(function() {
$("#e1").val("B1").select2();
$("#e1").on("select2-opening", function() {
$("#e1").on("select2-open", function() {
$("#e1").select2("search","BBB");
});
});
});
</script>
但是在我的代码中,我们需要设置选项的值(例如:"B1")而不是搜索的词(例如:"ABC")
http://jsfiddle.net/abhiklpm/98mhzv5b/
知道了::)更新的小提琴:http://jsfiddle.net/abhiklpm/98mhzv5b/1/
这项工作
对我来说<select id="my_select2" data-value="2612"></select>
$input = $('#my_select2')
$.ajax({
type: 'GET',
url: url,
data: {
term: $input.data('value')
},
dataType: 'json',
cache: false,
success: function (data) {
Object.keys(data).forEach(function (index){
$input.html(`<option value='${data[index].id}'>${data[index].name}</option>`)
})
$input.select2({
width: '100%',
dir: "rtl",
ajax: {
url: url,
dataType: 'json',
type: "GET",
data: function (term) {
return term;
},
processResults: function (data) {
return {
results: $.map(data, function (item) {
return {
text: item.name,
id: item.id
}
})
};
}
},
escapeMarkup: function (markup) {
return markup;
},
minimumInputLength: 1
});
}
});
相关文章:
- 如何根据其他下拉列表中的选择筛选下拉结果
- 使用下拉列表中的值查询 MySQL 数据库,然后使用结果填充文本字段而不刷新页面
- Select2 以编程方式设置搜索词并打开包含相关结果的下拉列表(无 ajax 调用)
- 无法在 MVC 中使用 jquery/js 将 json 数据(API 结果)绑定到下拉列表
- 显示带有“添加另一个”按钮的选定结果的下拉列表
- 显示选择下拉列表中的结果,然后克隆并添加另一个选择
- 动态下拉列表,显示结果
- 像谷歌(ASP)一样在文本框下方的下拉列表中搜索结果
- 根据第一个下拉列表结果填充第二个下拉列表
- 在搜索下拉列表时,是否可以将结果放在顶部
- 甚至在选择下拉列表中使用.change来筛选结果
- 将JSON结果绑定到下拉列表
- PHP 下拉列表,用于查询另一个下拉列表以查询结果
- 下拉列表中没有显示Geonames JSONP结果
- JSON结果到下拉列表
- 在自动完成的下拉列表[Meteor]中分组结果
- 使用jquery/php从下拉列表中获取即时结果
- 将数组结果过滤到下拉列表中
- 如何根据前两个相关下拉列表的结果自动填充下拉列表
- 无法从 select2 下拉列表中选择结果