答案 0 :(得分:0)
您可以将选项元素放入输入的数据属性中:
var select = document.getElementById("ddVehicles");
var selOption = select.options[select.selectedIndex]
document.getElementById('searchFilter').dataset.selOption = selOption
或者你可以存储选项元素的索引,文本甚至outerHTML,无论你需要什么。
有关详细信息,请参阅https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes。
答案 1 :(得分:0)
我建议缓存选项,而不是重新创建它们,并使用全部小写(或者如果您愿意,可以使用上层)进行测试,以增加匹配的机会。如果搜索字段为空,则将选择恢复为其原始状态。
哦,惯例是以大写字母开头的变量名是构造函数。
E.g。
var optionsCache = [];
function filterItems(el) {
var value = el.value.toLowerCase();
var form = el.form;
var opt, sel = form.ddVehicles;
if (value == '') {
restoreOptions();
} else {
// Loop backwards through options as removing them modifies the next
// to be visited if go forwards
for (var i=sel.options.length-1; i>=0; i--) {
opt = sel.options[i];
if (opt.text.toLowerCase().indexOf(value) == -1){
sel.removeChild(opt)
}
}
}
}
// Restore select to original state
function restoreOptions(){
var sel = document.getElementById('ddVehicles');
sel.options.length = 0;
for (var i=0, iLen=optionsCache.length; i<iLen; i++) {
sel.appendChild(optionsCache[i]);
}
}
window.onload = function() {
// Load cache
var sel = document.getElementById('ddVehicles');
for (var i=0, iLen=sel.options.length; i<iLen; i++) {
optionsCache.push(sel.options[i]);
}
}
&#13;
<form>
<input type="text" id="searchFilter" name="searchFilter" placeholder="Search"
onkeyup="filterItems(this);">
<select id="ddVehicles" name="ddVehicles" size="4">
<option value="1">BMW</option>
<option value="2">Mercedes-Benz</option>
<option value="3">Bentley</option>
<option value="4">Lamborghini</option>
</select>
</form>
&#13;
我认为以上应该适用于IE 5,我认为它有 getElementById 。如果没有,您可以使用document.forms[0].elementName
引用表单控件。
答案 2 :(得分:0)
function filter() {
var keyword = document.getElementById("search").value;
var select = document.getElementById("select");
for (var i = 0; i < select.length; i++) {
var txt = select.options[i].text;
if (!txt.match(keyword)) {
$(select.options[i]).attr('disabled', 'disabled').hide();
} else {
$(select.options[i]).removeAttr('disabled').show();
}
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<div>
<input type="text" id="search" name="search" style="margin: 10px;width: 165px;" onkeyup="filter()">
</div>
<div>
<select id="select" size="10" style="margin: 10px; width: 165px;height: 170px;">
<option>Cupcake</option>
<option>Cunut</option>
<option>Eclair</option>
<option>Froyo</option>
<option>Gingerbread</option>
<option>Honeycomb</option>
<option>Ice Cream Sandwich</option>
<option>Jelly Bean</option>
<option>KitKat</option>
<option>Lollipop</option>
<option>Marshmallow</option>
<option>Nougat</option>
</select>
</div>
</div>