不知道你是怎么处理的,让input的获取焦点和失去焦点来控制ul的显示和隐藏然后,又让li的click来控制ul的隐藏一旦点击了某个li,就把这个li的值传递给指定的input

解决方案 »

  1.   

    问题在这里:我点击li元素的时候同时又让input 失去了焦点, 结果li click 事件与input blur 事件同时发生了.. 我本来在li click 事件中准备将选择的项写入input里的,结果被input blur 事件一搅和,
    下拉单被隐藏了,没能写入input。因为写入语句在li click 事件里, 我这么说还明白吗??
      

  2.   

     jquery代码:
     $(function () {
                $("input:text").keyup(function () {
                    var key = $.trim($(this).val());
                    if (key !== "") {     // 如果关键字不为空
                        $.ajax({
                            type: "POST",
                            ....
                            ...
                            success: function (data) {
                                $(".completionList").show();
                                $(".completionList ul li").remove();
                                $(data.d).each(function (i) {
                                 $("div.completionList ul").append("<li>"+this+ "</li>");
                                });                          
                            }                     
                        }); 
                    }  
                  }).blur(function () {                 //  input失去焦点事件
                   $("div.completionList").hide();     
              });            $("div.completionList ul li").live('click', function () {   // li点击事件
                    var index = $("div.completionList ul li").index(this);
                    var key = $(this).eq(index).text();
                    $("input:text").val(key);
                    $("div.completionList").hide();
                })
            })
      

  3.   

     我也是这么想的,所以写了一个判断语句
    if($("div.completionList ul li").css("background")!="#fgggdd")
    {
       //  隐藏下拉单
    }
     但貌似是错的,因为判断的不是当前的那个选项,而是所有li,要是有一个方法取得当前的li 元素就好了
      

  4.   

    写个只要li的上面有鼠标事件发生,
    input的隐藏行为,就不执行