请问为什么input在输入中文的时候,还在输入字母的时候就判断为非空了?

$("input").on("focus",function(){

    $("input").on("keyup",function(){

        var neirong = $(this).val();
        if($(this).val() != ""){
        $(".search-result").css("display","block");
        $(".search-result .result-tt").find("a").text("搜"+neirong+"的用户");
        }

        if($(this).val() == ""){
            $(".search-result").css("display","none");
        }

    });
    
});

请问一下为什么当我要输入中文,我中文还没打出来的时候,搜索框就出来了,这是我代码的问题,还是我少了哪一步判断啊????
前端辣鸡小白,希望有大神不嫌弃愿意帮帮我。。感激

阅读 5.7k
4 个回答

监听input事件就行了,你这个嵌套完全没必要,且把代码搞复杂了

-------------更新------------------

开始中文输入时会触发compositionstart事件
选词结束后会触发compositionend事件
类似于keydown和keyup
解决办法,在外层设置一个状态flag,在这两个事件过程中flag=false,在事件完成后flag=true。

<input id="txt" type="text">
<script>
    var flag = true;
    $('#txt').on('compositionstart',function(){
        flag = false;
    })
    $('#txt').on('compositionend',function(){
        flag = true;
    })
    $('#txt').on('input',function(){
        var _this = this
        return setTimeout(function(){
            if(flag && $(_this).val() !== ''){//判断flag和输入的值
                return console.log($(_this).val());
            }
        },0)
    })
</script>

输入法特性如此,代码没问题
可以加个一定时间内没输入再去搜索的判断

新手上路,请多包涵

可以在input框失去焦点时判断输入框是否为空。

用 oninput 事件 可以监听中文输入,keyup是不能监听中文输入的.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题