0

我正在为我的项目创建一个自动建议选项,当用户单击 LI 时,它假设将其值附加到搜索字段,但问题是当用户单击它时,它首先执行 focusout 事件,然后才执行 click 事件. 有什么办法可以切换执行顺序吗?我的代码:

<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'
    });

});

});

有什么建议么?

4

1 回答 1

0

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

            $('.dropdown').mouseenter(function() {
            $('.autosuggest').off('focusout.mynamespace');
        });
        $('.dropdown').mouseout(function() {
            $('.autosuggest').focusout(function (){
                $('.result').html('');
            });
        });
于 2013-08-11T15:46:10.477 回答