我想知道我是否可以通过jquery使用输入框过滤选择列表获得一些帮助。
这是我的js的样子,但它似乎没有用。 我猜这是因为选择列表中的选项不可隐藏。
<script type="text/javascript">
$(document).ready(function() {
$("#inputFilter").change(function() {
var filter = $(this).val();
$("#selectList option").each(function() {
var match = $(this).text().search(new RegExp(filter, "i"));
if (match > 0) {
$(this).show(); // Does not work
}
else
$(this).hide();
});
});
});
</script>
这是我的HTML
<input id="inputFilter" />
<select id="selectList">
<option value="1111" >1111 - London</option>
<option value="1112" >1112 - Paris </option>
</select>
答案 0 :(得分:4)
请试试这个:
$("#inputFilter").change(function() {
var filter = $(this).val();
//alert(filter);
$("#selectList option").each(function() {
var match = $(this).text().search(new RegExp(filter, "i"));
//alert(match);
if (match < 0 && $(this).text() != "--select--") {
$(this).attr("disabled",true);
}
else
$(this).attr("disabled",false);
});
});
您可以在行动here中看到它。
HTH
答案 1 :(得分:0)
尝试禁用而不是隐藏。
$(this).attr('disabled', 'disabled');
你可以做的另一件事就是从DOM中删除选项。
答案 2 :(得分:0)
没有text
属性。
尝试这样的事情:
<input id="inputFilter" />
<select id="selectList">
<option value="1111">1111 - London</option>
<option value="1112">1111 - Paris</option>
</select>
<script>
$(document).ready(function() {
$("#inputFilter").change(function() {
var filter = $(this).val();
$("#selectList option").each(function() {
var match = $(this).text().search(new RegExp(filter, 'i'));
if (match > 0) {
$(this).show();
}
else{
$(this).hide();
}
});
});
});
</script>
编辑:编辑了我的答案,因为我误读了一些事情。