我正在编写一个组合框,它从数据库中获取包含输入到输入框中的文本的电影列表。当用户在输入框中选择时,comboxbox应该是下拉列表,并且当输入框失焦时隐藏。问题是,当用户点击某个项目进行选择时,输入将失焦,组合框隐藏,点击丢失。所以我想在隐藏组合框之前等待处理所有点击。我已经添加了一个seTimeout do延迟隐藏1s,但这不是很好,因为1s有点长,较低的值可能使组合框在点击之前隐藏。这是我的代码:
<script>
function make_combobox() {
$.get("/Clients/make_movies_table", { search_str: mov_text_sel.value }, function (data, status)
{
mov_sel.innerHTML=data;
});
$("#mov_sel").show();
}
function hide_combobox() {
setTimeout(function () {
$('#mov_sel').hide();
}, 1000);
window.
}
</script>
<input type="text" id="mov_text_sel" size="10"
onfocus="make_combobox()"
oninput="make_combobox()"
onblur="hide_combobox()"
/>
<div style="position:relative">
<div id="mov_sel">
</div>
</div>
和组合框行的代码:
<td class="combobox"
onmouseover="this.style.backgroundColor = 'RoyalBlue'"
onmouseout="this.style.backgroundColor = 'white'"
onclick="mov_text_sel.value = '@rec.Title'">
@rec.Title
</td>