JQuery/Javascript两个控件的focus和blur事件

    想在网页上实现这样的功能:点击文本框时,出现一个下拉列表(动态生成,用div+a实现);选择下拉列表中的选项可以改变文本框中的字符串;两者都失去焦点的话,下拉列表消失。问题出在了消失上。如果在文本框blur的时候hide列表,那么一点击列表,文本框就会失去焦点而隐藏列表,导致无法运行点击事件。

    也就是说,两个控件,只要一个控件有焦点,列表就不消失,而只有两个控件都失去焦点的时候,列表才会消失。最后用setTimeout实现,不知道有没有更好的办法。。代码如下:

var shouldbeshowing = false;
var tip_timer = null;

$(document).ready(function(){
    
    $("#input1").click(function(){
        var c = $("#input1");
        c.val("");
        var e = $("#selectpanel");
	    var d = c.offset();
	    var a = d.left;
	    var b = d.top + c.outerHeight()+5;
	    e.css({left:a+"px",top:b+"px"}).show();
        }
	shouldbeshowing = true;
	if(tip_timer){clearTimeout(tip_timer);}
    });
    
    $("#input1").bind("blur", function(){
        inputblur();
    });
    
    $("#selectpanel").mouseenter(function(){
        $("#input1").unbind("blur");
    }).mouseleave(function(){        
        $("#input1").bind("blur", function(){
            inputblur();
        });
        $("#input1").focus();
    });
});

function inputblur(){
    shouldbeshowing = false;
    if(tip_timer){clearTimeout(tip_timer);}
    tip_timer=setTimeout(function(){
        if(!shouldbeshowing){
            $("#selectpanel").slideUp();
        }
    },200);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值