可搜索 select 选项
Searchable select option
有没有办法把select选项设为selectable/autocomplete/searchable?不幸的是我不能改变形式。所以我无法将 select 选项更改为文本字段。但我可以访问 css 和 javascript..
下面是select选项。
<select name="siteID" id="siteID" class="abcd" style="width:100%" />
<option value='0' selected='true'> Not associated to any Circuit ID </option>
<option value='2101' > 1007345136 </option>
<option value='2102' > 1007921321 </option>
<option value='2103' > 1007987235 </option>
<option value='2407' > 132 </option>
<option value='2408' > 141 </option>
<option value='2409' > 142 </option>
<option value='2410' > 145 </option>
<option value='2701' > 225 </option>
<option value='2702' > 248 </option>
<option value='2703' > 251 </option>
<option value='2704' > 254 </option>
<option value='2705' > 264 </option>
<option value='1804' > 27 </option>
<option value='2706' > 274 </option>
<option value='2707' > 310 </option>
<option value='2708' > 311 </option>
<option value='3001' > 333 </option>
<option value='2401' > 38 </option>
<option value='2402' > 64 </option>
<option value='2403' > 68 </option>
<option value='2404' > 69 </option>
<option value='2405' > 76 </option>
<option value='2406' > 81 </option>
<option value='2411' > abc123post </option>
<option value='3301' > circuit id 50 </option>
<option value='2105' > fadhil </option>
<option value='2104' > faisal </option>
<option value='3002' > IPEN - SITE TEST </option>
<option value='3601' > Manual Circuit ID </option>
<option value='3302' > new circuit id fadhil </option>
<option value='1809' > try iframe </option>
</select>
是否有任何 javascript/jquery 和 css 可以将其转换为可搜索的。
您可以考虑使用名为 Select2 的 jQuery 插件。您不能 自行关闭 <select>
标签!你可以这样使用它:
$(function () {
$("select").select2();
});
@import url(https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.min.css);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.full.min.js"></script>
<select name="siteID" id="siteID" class="abcd" style="width:100%">
<option value='0' selected='true'> Not associated to any Circuit ID </option>
<option value='2101' > 1007345136 </option>
<option value='2102' > 1007921321 </option>
<option value='2103' > 1007987235 </option>
<option value='2407' > 132 </option>
<option value='2408' > 141 </option>
<option value='2409' > 142 </option>
<option value='2410' > 145 </option>
<option value='2701' > 225 </option>
<option value='2702' > 248 </option>
<option value='2703' > 251 </option>
<option value='2704' > 254 </option>
<option value='2705' > 264 </option>
<option value='1804' > 27 </option>
<option value='2706' > 274 </option>
<option value='2707' > 310 </option>
<option value='2708' > 311 </option>
<option value='3001' > 333 </option>
<option value='2401' > 38 </option>
<option value='2402' > 64 </option>
<option value='2403' > 68 </option>
<option value='2404' > 69 </option>
<option value='2405' > 76 </option>
<option value='2406' > 81 </option>
<option value='2411' > abc123post </option>
<option value='3301' > circuit id 50 </option>
<option value='2105' > fadhil </option>
<option value='2104' > faisal </option>
<option value='3002' > IPEN - SITE TEST </option>
<option value='3601' > Manual Circuit ID </option>
<option value='3302' > new circuit id fadhil </option>
<option value='1809' > try iframe </option>
</select>
您可以使用 javascript 来包含其他脚本,如下所述:
How do I include a JavaScript file in another JavaScript file?
function includeJs(jsFilePath) {
var js = document.createElement("script");
js.type = "text/javascript";
js.src = jsFilePath;
document.body.appendChild(js);
}
那么您可以使用 Selectize:
来解决您的问题
includeJs("https://code.jquery.com/jquery-2.1.4.min.js");
includeJs("https://cdn.rawgit.com/brianreavis/selectize.js/master/dist/js/standalone/selectize.js");
$(function() {
$('select').selectize();
});
您还需要在 css 中包含来自 selectize.css 的规则(或者您可以在 Javascript)
https://jsfiddle.net/qpyhjydp/
请注意,在 fiddle 中,我修复了自动关闭 <select />
(不允许)
显示:none 对 IE11 无效
我在 select 选项中遇到了同样的搜索问题。
我所做的是禁用不匹配的选项并隐藏它们。
在此之后,我对选项进行了排序,仅在顶部显示已启用的选项。
我写的代码贴在下面-请尝试理解逻辑我希望它能工作
禁用选项使用:
$("#addselect option")attr('disabled', 'disabled').hide
并再次启用它使用:
$("#addselect option").removeAttr('disabled').show();
按禁用选项排序:
$("#addselect option").each(function (i, val) {
if ($(this)[i].disabled) {
moveDown("selectId");
}
else {
moveUp("selectId");
}
}
function moveUp(selectId) {
var selectList = document.getElementById(selectId);
var selectOptions = selectList.getElementsByTagName('option');
for (var i = 1; i < selectOptions.length; i++) {
var opt = selectOptions[i];
if (!opt.disabled) {
selectList.removeChild(opt);
selectList.insertBefore(opt, selectOptions[i - 1]);
}
}
}
function moveDown(selectId) {
var selectList = document.getElementById(selectId);
var selectOptions = selectList.getElementsByTagName('option');
for (var i = selectOptions.length - 2; i >= 0; i--) {
var opt = selectOptions[i];
if (opt.disabled) {
var nextOpt = selectOptions[i + 1];
opt = selectList.removeChild(opt);
nextOpt = selectList.replaceChild(opt, nextOpt);
selectList.insertBefore(nextOpt, opt);
}
}
}
完整选项可搜索 select 框
还支持控制按钮键盘,例如 ArrowDown
ArrowUp
和 Enter
键
好的,我知道你不能将 select 更改为其他任何东西,但那些正在搜索类似内容的人可以将 select
更改为 datalist
,这非常简单:
<input list="weekday">
<datalist id="weekday">
<option value="Sunday">
<option value="Monday">
<option value="Tuesday">
<option value="Wednesday">
<option value="Thursday">
<option value="Friday">
<option value="Saturday">
</datalist>
查看 Chosen。
我尝试了 select2
和 selectize
,但都不适合我。我正在使用 jQuery 3.6。 Chosen
先尝试成功。
对于在项目中使用 bootstrap 的用户,可以使用下拉按钮创建可搜索的 select。
在下拉菜单中添加一个输入字段并使用 javascript 筛选选项。
可以在以下博客中找到带有示例的详细说明:
https://medium.com/@akshat_yadav/searchable-select-in-bootstrap-16353b93c96d
有没有办法把select选项设为selectable/autocomplete/searchable?不幸的是我不能改变形式。所以我无法将 select 选项更改为文本字段。但我可以访问 css 和 javascript..
下面是select选项。
<select name="siteID" id="siteID" class="abcd" style="width:100%" />
<option value='0' selected='true'> Not associated to any Circuit ID </option>
<option value='2101' > 1007345136 </option>
<option value='2102' > 1007921321 </option>
<option value='2103' > 1007987235 </option>
<option value='2407' > 132 </option>
<option value='2408' > 141 </option>
<option value='2409' > 142 </option>
<option value='2410' > 145 </option>
<option value='2701' > 225 </option>
<option value='2702' > 248 </option>
<option value='2703' > 251 </option>
<option value='2704' > 254 </option>
<option value='2705' > 264 </option>
<option value='1804' > 27 </option>
<option value='2706' > 274 </option>
<option value='2707' > 310 </option>
<option value='2708' > 311 </option>
<option value='3001' > 333 </option>
<option value='2401' > 38 </option>
<option value='2402' > 64 </option>
<option value='2403' > 68 </option>
<option value='2404' > 69 </option>
<option value='2405' > 76 </option>
<option value='2406' > 81 </option>
<option value='2411' > abc123post </option>
<option value='3301' > circuit id 50 </option>
<option value='2105' > fadhil </option>
<option value='2104' > faisal </option>
<option value='3002' > IPEN - SITE TEST </option>
<option value='3601' > Manual Circuit ID </option>
<option value='3302' > new circuit id fadhil </option>
<option value='1809' > try iframe </option>
</select>
是否有任何 javascript/jquery 和 css 可以将其转换为可搜索的。
您可以考虑使用名为 Select2 的 jQuery 插件。您不能 自行关闭 <select>
标签!你可以这样使用它:
$(function () {
$("select").select2();
});
@import url(https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.min.css);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.full.min.js"></script>
<select name="siteID" id="siteID" class="abcd" style="width:100%">
<option value='0' selected='true'> Not associated to any Circuit ID </option>
<option value='2101' > 1007345136 </option>
<option value='2102' > 1007921321 </option>
<option value='2103' > 1007987235 </option>
<option value='2407' > 132 </option>
<option value='2408' > 141 </option>
<option value='2409' > 142 </option>
<option value='2410' > 145 </option>
<option value='2701' > 225 </option>
<option value='2702' > 248 </option>
<option value='2703' > 251 </option>
<option value='2704' > 254 </option>
<option value='2705' > 264 </option>
<option value='1804' > 27 </option>
<option value='2706' > 274 </option>
<option value='2707' > 310 </option>
<option value='2708' > 311 </option>
<option value='3001' > 333 </option>
<option value='2401' > 38 </option>
<option value='2402' > 64 </option>
<option value='2403' > 68 </option>
<option value='2404' > 69 </option>
<option value='2405' > 76 </option>
<option value='2406' > 81 </option>
<option value='2411' > abc123post </option>
<option value='3301' > circuit id 50 </option>
<option value='2105' > fadhil </option>
<option value='2104' > faisal </option>
<option value='3002' > IPEN - SITE TEST </option>
<option value='3601' > Manual Circuit ID </option>
<option value='3302' > new circuit id fadhil </option>
<option value='1809' > try iframe </option>
</select>
您可以使用 javascript 来包含其他脚本,如下所述:
How do I include a JavaScript file in another JavaScript file?
function includeJs(jsFilePath) {
var js = document.createElement("script");
js.type = "text/javascript";
js.src = jsFilePath;
document.body.appendChild(js);
}
那么您可以使用 Selectize:
来解决您的问题includeJs("https://code.jquery.com/jquery-2.1.4.min.js");
includeJs("https://cdn.rawgit.com/brianreavis/selectize.js/master/dist/js/standalone/selectize.js");
$(function() {
$('select').selectize();
});
您还需要在 css 中包含来自 selectize.css 的规则(或者您可以在 Javascript)
https://jsfiddle.net/qpyhjydp/
请注意,在 fiddle 中,我修复了自动关闭 <select />
(不允许)
显示:none 对 IE11 无效
我在 select 选项中遇到了同样的搜索问题。
我所做的是禁用不匹配的选项并隐藏它们。
在此之后,我对选项进行了排序,仅在顶部显示已启用的选项。
我写的代码贴在下面-请尝试理解逻辑我希望它能工作
禁用选项使用:
$("#addselect option")attr('disabled', 'disabled').hide
并再次启用它使用:
$("#addselect option").removeAttr('disabled').show();
按禁用选项排序:
$("#addselect option").each(function (i, val) {
if ($(this)[i].disabled) {
moveDown("selectId");
}
else {
moveUp("selectId");
}
}
function moveUp(selectId) {
var selectList = document.getElementById(selectId);
var selectOptions = selectList.getElementsByTagName('option');
for (var i = 1; i < selectOptions.length; i++) {
var opt = selectOptions[i];
if (!opt.disabled) {
selectList.removeChild(opt);
selectList.insertBefore(opt, selectOptions[i - 1]);
}
}
}
function moveDown(selectId) {
var selectList = document.getElementById(selectId);
var selectOptions = selectList.getElementsByTagName('option');
for (var i = selectOptions.length - 2; i >= 0; i--) {
var opt = selectOptions[i];
if (opt.disabled) {
var nextOpt = selectOptions[i + 1];
opt = selectList.removeChild(opt);
nextOpt = selectList.replaceChild(opt, nextOpt);
selectList.insertBefore(nextOpt, opt);
}
}
}
完整选项可搜索 select 框
还支持控制按钮键盘,例如 ArrowDown
ArrowUp
和 Enter
键
好的,我知道你不能将 select 更改为其他任何东西,但那些正在搜索类似内容的人可以将 select
更改为 datalist
,这非常简单:
<input list="weekday">
<datalist id="weekday">
<option value="Sunday">
<option value="Monday">
<option value="Tuesday">
<option value="Wednesday">
<option value="Thursday">
<option value="Friday">
<option value="Saturday">
</datalist>
查看 Chosen。
我尝试了 select2
和 selectize
,但都不适合我。我正在使用 jQuery 3.6。 Chosen
先尝试成功。
对于在项目中使用 bootstrap 的用户,可以使用下拉按钮创建可搜索的 select。 在下拉菜单中添加一个输入字段并使用 javascript 筛选选项。
可以在以下博客中找到带有示例的详细说明:
https://medium.com/@akshat_yadav/searchable-select-in-bootstrap-16353b93c96d