我有一个输入框,其中包含自定义下拉菜单。当您点击菜单项时,应该将输入框的值设置为项目的文本。我还希望在输入框失去焦点时隐藏菜单。这就产生了一个问题,即点击菜单项会使输入框失去焦点并隐藏菜单,导致菜单项的点击事件无法运行。如何解决这个问题?
$(document).on('click', '#inputMenu li', function (e) {
$('#input').val($(this).text());
$('#inputMenu').removeClass('active');
e.preventDefault();
return false
});
$('#input').on('focusout',function(e) {
$('#inputMenu').removeClass('active');
});
$('#input').on('input',function(e) {
$('#inputMenu').addClass('active');
});
#inputMenu {
display: none;
}
#inputMenu.active {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="input" type="text" placeholder="type something">
<ul id="inputMenu">
<li>Click me to set text 1</li>
<li>Click me to set text 2</li>
<li>Click me to set text 3</li>
<li>Click me to set text 4</li>
</ul>
focus
和blur
比使用input
和focusout
更直观。 - MTCoster