我的HTML包含以下输入搜索框和包含此选择选项的以下标签。
我想将searchBox放在Option中,如果我在那个Select中有10000。要使用searchBox并从那里选择我想要的选项。
searchBox = document.querySelector("#searchBox");
countries = document.querySelector("#btd1");
var when = "keyup"; //You can change this to keydown, keypress or change
searchBox.addEventListener("keyup", function(e) {
var text = e.target.value;
var options = countries.options;
for (var i = 0; i < options.length; i++) {
var option = options[i];
var optionText = option.text;
var lowerOptionText = optionText.toLowerCase();
var lowerText = text.toLowerCase();
var regex = new RegExp("^" + text, "i");
var match = optionText.match(regex);
var contains = lowerOptionText.indexOf(lowerText) != -1;
if (match || contains) {
option.selected = true;
return;
}
searchBox.selectedIndex = 0;
}
});
&#13;
<!DOCTYPE html>
<html>
<head>
</head>
<body style="margin:0;">
<input id="searchBox" placeholder="Seach Project..." type="search">
<select id="btd1" name="Project">
<option disabled hidden="" selected value="">
Select Project *
</option>
</select>
</body>
</html>
&#13;
Option Box不包含任何内容cuz在我的索引中,它有一个JS,用添加按钮添加选项。
任何人都可以告诉我,我该怎么做才能做到这一点?
非常感谢:)
答案 0 :(得分:1)
是的,这是你的DEMO。我做的是这个;动态获取搜索框的值onkeyup然后计算包含的选项数。然后进入for循环以获得最佳macth并将其写入select。当然然后在有匹配时中断,以防止循环去检查其他匹配并得到匹配较少但匹配的结果。