我有一个文本框,然后是一个无序列表,如下所示:
<div>
<input type="text" />
<button>Go</button>
</div>
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
</ul>
现在处于文本框的模糊事件中:
$('input').on('blur', function() {
$('ul').hide();
});
上面的代码工作正常。
我正在尝试制作类似combobox
的内容。
所以,我希望的行为是:
因此,对于第二项功能,当我点击任意li
时,click
li
事件应该会被触发,然后ul
应该被隐藏。
答案 0 :(得分:1)
var items = ["Apple", "Banana", "Celery", "Peach", "Plum"];
$('input').on('input', function() {
var text = $(this).val();
$('ul').show().empty().append(items.filter(function(item) {
return item.match(new RegExp(text, 'i'));
}).map(function(text) {
return $('<li>').text(text);
}));
});
$('input').on('blur', function() {
$('ul').fadeOut();
});
$('ul').on('click', 'li', function() {
$('input[type=text]').val($(this).text());
$('ul').hide();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
<input type="text" />
<button>Go</button>
</div>
<ul>
</ul>
&#13;
答案 1 :(得分:0)
只需更新文本框,然后在li的同一点击事件中隐藏ul。
$("li").on("click", function() {
$("input[type=text]").val(this.text());
$("ul").hide();
});
很抱歉,如果jQuery不完美 - 我不经常使用它。无论如何,这应该有所帮助。