首页 > 关于js判断input是否为焦点,false时的问题

关于js判断input是否为焦点,false时的问题

$("#search").click(function(){
    var act = document.activeElement.id;
    if(act == "search" ){
        $(".search-btn i").css("color","#00C680");
        $(".search-btn i").css("z-index","1");  
    }else{
        $(".search-btn i").css("color","#FFF");
        $(".search-btn i").css("z-index","-1");
    }
});

input为焦点时,if代码生效了,不是焦点时,else没有生效,是哪里写错了?


可以用focus()和blur()的方法判断是否获得焦点和失去焦点。

$("#search").focus(function(){
    $(".search-btn i").css("color","#00C680");
    $(".search-btn i").css("z-index","1");  
}).blur(function(){
    $(".search-btn i").css("color","#FFF");
    $(".search-btn i").css("z-index","-1");
});

你的点击事件都绑定在了search上了,点击其它地方肯定不会调用click里面的方法了,当然也就不会执行。


你点击一个id为search的标签,然后判断这个标签是否为获得焦点。
这个写法当然会一直往if的方向走下去啊, 因为你点击一个标签,都会默认获得焦点,if的条件一直成立。


如果仅仅是纯展示层的问题可以思考用css解决?
不知道你的dom结构。以bootstrap的dom结构为例:

<div class="input-group">
  <input type="text" class="form-control" placeholder="Search for...">
  <span class="input-group-btn">
    <button class="btn btn-default" type="button">Go!</button>
  </span>
</div>
input.form-control + .input-group-btn > .btn {
  color: #FFF;
  z-index: -1;
}
input.form-control:focus + .input-group-btn > .btn {
  color: #00C680;
  z-index: 1;
}

关于activeElement对象我也只能参见文档:https://developer.mozilla.org/zh-CN/docs...


可以通过:focus这种选择器 判断,例如
if( $('input:focus').length==0 ){
//不是焦点
}else{
//是焦点
}

【热门文章】
【热门文章】