我们同时使用onblur和onclick来使下拉框隐藏,但是更大的问题出现了,这两个功能相冲突,onblur过于强悍,根本没有onclick方法实现的机会,搜索框无法获取点击项的内容。这个就是我们想要解决的onclick和onblur冲突问题。
对应这个问题,这里我们介绍两种解决办法:
- 使用setTimeout来使onblur时间延期执行,使onclick执行完后再执行onblur。(其中setTimeout的时间设定应该在100ms以上,否则依旧不行)示例代码如下:
$(".mdd").focus(function() {
$(".area").show();
});
$(".arealist a").click(function(){
var area = $(this).html();
$(".mdd").val(area);
$(".area").hide();
});
$(".mdd").blur(function() {
timer=setTimeout(function(){
$(".area").hide();
},120);
});
- 使用document.onmousedown来代替onblur实现隐藏下拉框功能
$(".mdd").focus(function() {
$(".area").show();
});
$(".arealist a").click(function(){
var area = $(this).html();
$(".mdd").val(area);
$(".area").hide();
});
$(".mdd").mousedown(function() {
$(".area").hide();
});
网友评论