我想使用最新版本的Select2查询我的网站的API并返回一个多选。它获取正确的数据,甚至可以正确格式化下拉菜单,将返回对象中的两个键合并为“(A-123)John Johnson”,但下拉菜单没有响应鼠标悬停或点击。Select2 4.0.0不能选择结果
我正在使用select2.full.min.js和select2.min.css文件。为了项目的目的,我将它们包含在目录中,并通过cshtml中的Bundles访问它们,而不是通过CDN访问它们。
HTML:
<div>
<select class="user-list" multiple="multiple" style="width: 100%">
</select>
</div>
目前,它看起来像这一点,这就是我想要的:
不知道这是否是相关的,但是当我浏览生成的源代码在搜索时,输入看起来很好,但下拉的代码呈灰色,好像它隐藏了一样。
每我已经在这里和其他地方发现了其他的建议,我已经尝试了一些不同的解决方案。我最终发现了templateResult和templateSelection应该如何工作(不是特别感谢文档),并尝试返回ID,但我仍然无法真正选择任何东西,甚至在我将鼠标悬停在上面时得到响应选项。
这里是我最终结束了,包括一些调试,以确保返回的对象是有效的。
JS:
// Setup autocomplete/select for User filter
$(".user-list").select2({
ajax: {
url: "[api url]",
type: "GET",
dataType: "json",
data: function (params) {
return {
search: params.term, // search term
page: params.page
};
},
processResults: function (data) {
console.log(JSON.stringify(data));
return {
results: data
};
},
},
escapeMarkup: function (markup) { return markup; },
id: function (data) { return data.Id.toString(); },
minimumInputLength: 1,
templateResult: function (data, page) {
return "(" + data.User + ") " + data.Name;
},
templateSelection: function (data, page) {
return "(" + data.User + ") " + data.Name;
}
})
ID是一个GUID,还有其他两个领域,我会打电话给名和用户。
数据样本:
[
{
"Id":"a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1",
"Name":"John Johnson",
"User":"A-123"
},
{
"Id":"b2b2b2b2-b2b2-b2b2-b2b2-b2b2b2b2b2b2",
"Name":"Tom Thompson",
"User":"B-456"
}
]
我不想增加的问题一堆,似乎是这个,但我发现大多数成果已为老版本显著不同的选择,他们只是还没有为我工作。
也许有点不规则上我自己的问题发表意见,但我不知道为什么我会m没有任何实际反馈而被低估。我在这个插件的新版本中没有看到有关帮助主题或故障排除文档的信息,我认为这个问题足以帮助任何人,而我在这里就自己的问题提供了尽可能详细的信息。 – MikeOShay
在这里看看:http://stackoverflow.com/questions/29035717/select2-load-data-using-ajax-cannot-select-any-option 请注意,你有'ID'属性 - 而不是'ID',这可能导致问题。 – akn
这是它的一部分。不喜欢继续关注文档,但对我而言,它并没有明确规定该要求,也不知道如何处理数据或如何使用templateResult或templateSelection。要真正了解这一点,实际上你必须在文档站点本身查看源代码HTML和JS,这是教人们使用插件的一种非常糟糕的方式。无论哪种方式,我想出了哪些选项与新版本相关,并得到它返回“ID”而不是“ID”,它的工作。 – MikeOShay