有条件地触发onb​​lur事件

时间:2013-09-29 19:53:11

标签: jquery onblur

我需要能够控制何时实际触发模糊事件。

<div class="selectedcomp"></div>
<input type="text" class="textbox" maxlength="50" id="searchfavs" />
<div id="globalcompanyresultscontainer">
    <div id="globalcompanyresults">
    </div>
</div>

当用户在#searchfavs中键入查询时,我将结果加载到#globalcompanyresults中。当用户单击加载的结果时,我将该结果的HTML复制到另一个元素中:

$('#globalcompanyresults').on('click', 'div.company-card img', function () {
    $('#globalcompanyresults').html('');
    $('.selectedcomp').html($(this).parent()[0].outerHTML);
});  

一旦用户点击#searchfavs元素外部或按Tab键,同时导致#searchfavs失去焦点,我想清除所有结果,只需调用它:

    $("#searchfavs").blur(function () {
        $('#globalcompanyresults').html('');
    });

但是,只要用户在#globalcompanyresults中单击结果,就会调用此函数,抛出blur事件,导致#globalcompanyresults为空,我无法再访问单击的结果HTML。

onblur,如果单击#globalcompanyresults中的结果,通过在其他位置单击或按Tab键,它可能不会被触发。

1 个答案:

答案 0 :(得分:1)

如果您只想在按下tab键时执行逻辑,为什么不回复keydown事件而不是blur事件?

$('#searchfavs').keydown(function(e) { 
    if (e.keyCode == 9) {
        $('#globalcompanyresults').html('');
    }
});