如何在执行焦点之前检查点击事件是否发生

时间:2013-08-11 13:28:17

标签: jquery

我正在为我的项目创建一个autosuggest选项,当用户点击LI时,它会将其值超出搜索字段,但问题是当用户点击它时首先执行focusout事件并且之后才会点击事件。有没有办法改变执行的顺序? 我的代码:

<form id="form1" name="form1" >
Type name:
<input type="text" id="autosuggest" class="autosuggest" autocomplete="off"/> <input type="submit" value="search" />
<div class="dropdown" name="dropdown">
    <ul class="result"></ul>
</div>
<br>
some text
</form> 
<div id="results"></div>

这里有魔力发生:

$(document).ready(function(){
$('.autosuggest').keyup(function(){
    var thisposition = $(this).position();
    var search_term = $(this).val();

    $.post('searcher.php', {search_term:search_term}, function(data){
        $('.result').html(data);

        $('.result li').click(function(){
            var result_value = $(this).text();
            $('.autosuggest').val(result_value);
            $('.result').html('');

        });

    });

    $('.autosuggest').focusout(function (){
        $('.result').html('');
    });

    $('div[name=dropdown]').css({
       'position' : 'absolute',
       'top': eval (thisposition.top + 27) + 'px',
       'left':eval (thisposition.left ) + 'px',
       'background':'white'
    });

});

});

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我通过在进入和退出下拉列表时设置和取消设置聚焦事件处理程序来解决此问题。 这里的代码以防有人遇到同样的问题:

            $('.dropdown').mouseenter(function() {
            $('.autosuggest').off('focusout.mynamespace');
        });
        $('.dropdown').mouseout(function() {
            $('.autosuggest').focusout(function (){
                $('.result').html('');
            });
        });