无需 JS 初始化的可搜索 select 输入
Searchable select input without JS initialization
我需要一个可搜索的select输入,不需要在JS中初始化。我在我的网站上使用 Ajax
,所以你无法知道有多少 select 来了,在调用之前他们的 ID,所以一些 data-list
解决方案是可以的,但用户不应该发送类型输入,这应该像 select 输入一样工作,其中定义了一个 id 和一个标签,显示标签并发送 id。你能帮助我吗?我发现的唯一解决方案需要像这样的 JS 初始化:
$(".js-example-disabled").select2();
但是我们不知道 AJAX 调用之前的 ID,也不知道我们需要处理的 select 输入的数量。
您可以在 AJAX 调用的 success
处理程序中构建自己的 select 元素。然后当你将它添加到正文时用 .select2()
初始化它。这里唯一要考虑的是文档中的位置。
function dynamicSelect2(url, placement) {
$.ajax({
url: url,
success: function(data) {
var $select = $('<select></select>');
$.each(data, function(i, item) {
$select.append(`<option value="${item}">${item}</option>`);
});
$select.appendTo(placement);
$select.select2();
})
});
}
我已将它包装在一个函数中,以便您可以动态更改数据端点和在正文中的位置。
dynamicSelect2('yourdata', document.body);
我需要一个可搜索的select输入,不需要在JS中初始化。我在我的网站上使用 Ajax
,所以你无法知道有多少 select 来了,在调用之前他们的 ID,所以一些 data-list
解决方案是可以的,但用户不应该发送类型输入,这应该像 select 输入一样工作,其中定义了一个 id 和一个标签,显示标签并发送 id。你能帮助我吗?我发现的唯一解决方案需要像这样的 JS 初始化:
$(".js-example-disabled").select2();
但是我们不知道 AJAX 调用之前的 ID,也不知道我们需要处理的 select 输入的数量。
您可以在 AJAX 调用的 success
处理程序中构建自己的 select 元素。然后当你将它添加到正文时用 .select2()
初始化它。这里唯一要考虑的是文档中的位置。
function dynamicSelect2(url, placement) {
$.ajax({
url: url,
success: function(data) {
var $select = $('<select></select>');
$.each(data, function(i, item) {
$select.append(`<option value="${item}">${item}</option>`);
});
$select.appendTo(placement);
$select.select2();
})
});
}
我已将它包装在一个函数中,以便您可以动态更改数据端点和在正文中的位置。
dynamicSelect2('yourdata', document.body);