选择2 - 使用预加载的选项创建 ajax
Select2 - create ajax with pre-loaded options
我有一个相当简单的要求集,但终其一生都无法弄清楚如何使用 Select2 实现它......
- 我想在页面上输入
- 用户可以键入以触发 AJAX 调用
- 它还显示预加载的选项列表,用户可以单击这些选项,而不是键入以触发 AJAX。
- 如果关闭(模糊)输入,然后再次重新打开它,则仍应显示以前加载的 AJAX 响应(而不是选项为空,您必须开始键入才能再次加载它们)。
2(当然是#1和#3!),但我不能在一个输入字段中得到所有三个要求。我还没有找到任何方法来做#4。
实际上,为了实现#3,我想我正在寻找一种方法将我的候选名单注入到通常的ajax返回选项中,并使用类似#4的东西来确保在打开字段时不会清除这些选项。
有没有办法初始化 Select2 字段的(通常加载 Ajax 的)选项?我尝试传入data
但它不起作用,我尝试使用 initSelection,直到我意识到这无关紧要,我尝试了各种各样的事情,但无济于事......
希望这是可能的,我只是在某个地方错过了一个选项!
附言我已经在 Stack 上阅读了几个与此标题相似的线程,但它们似乎都没有回答这个问题。如果我错过了至关重要的,请告诉我!
我认为如果您
使用 Select2 的 query
选项而不是 ajax
选项,您可以做到这一点。这样,如果键入了任何字符,则可以发出 ajax 请求,如果未键入任何字符,则显示默认列表。
如果默认选项定义如下:
var DEFAULT_OPTIONS = [
{ id: 'def1', text: 'Default Choice 1' },
{ id: 'def2', text: 'Default Choice 2' },
{ id: 'def3', text: 'Default Choice 3' }
];
您可以执行以下操作:
var lastOptions = DEFAULT_OPTIONS;
$('#select').select2({
minimumInputLength: 0,
query: function(options) {
if (options.term) {
$.ajax({
type: 'post', // Or 'get' if appropriate
url: 'your_ajax_url',
dataType: 'json',
data: {
term: options.term // Change name to what is expected
},
success: function(data) {
lastOptions = data;
options.callback({ results: data });
}
});
} else {
options.callback({ results: lastOptions });
}
}
});
斯菲德尔
相关文章:
- 从动态创建的html选择中选择所选选项
- 如何在Google chrome安全首选项文件中创建扩展安全哈希代码
- 创建了一个选项卡,但点击时不会起作用-jQuery issue/newbie
- 如何创建一个随机的计算机选项,除了你已经选择的选项
- 正在尝试创建一个选择选项
- 用CSS和Javascript创建一个选项卡系统
- 如何为下拉菜单中的不同选项创建不同数量的输入文本字段
- 使用来自 JSON 的 jquery 或 angularJS 的选项创建多个选择
- Javascript 使用下拉菜单选项创建文本字段
- 使用 JavaScript 和 AJAX 选项创建 Select HTML
- 根据选择中的选项创建选择组
- 为投递箱选项创建不同的默认值
- 选择2 - 使用预加载的选项创建 ajax
- 我可以使用 ng 选项创建指令(不使用选择标签)吗?
- 如何在弹出窗口中的同一页面上用下拉列表中的预选选项创建超链接
- 为iframe获取对象null.使用jsdom和所需选项创建iframe
- 从选择选项创建以毫秒为单位的日期数组;YYYY,M,D”;
- 如何创建一个基于下拉选项创建段落的Javascript表单
- 根据从下拉菜单中选择的选项创建查询字符串
- 当使用javascript时,我如何为一个选择的选项创建一个if语句