请问为什么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");

        }


    });

    

});

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

波斯汪
浏览 354回答 1
1回答

手掌心

监听input事件就行了,你这个嵌套完全没必要,且把代码搞复杂了-------------更新------------------开始中文输入时会触发compositionstart事件选词结束后会触发compositionend事件类似于keydown和keyup解决办法,在外层设置一个状态flag,在这两个事件过程中flag=false,在事件完成后flag=true。<input id="txt" type="text"><script>&nbsp; &nbsp; var flag = true;&nbsp; &nbsp; $('#txt').on('compositionstart',function(){&nbsp; &nbsp; &nbsp; &nbsp; flag = false;&nbsp; &nbsp; })&nbsp; &nbsp; $('#txt').on('compositionend',function(){&nbsp; &nbsp; &nbsp; &nbsp; flag = true;&nbsp; &nbsp; })&nbsp; &nbsp; $('#txt').on('input',function(){&nbsp; &nbsp; &nbsp; &nbsp; var _this = this&nbsp; &nbsp; &nbsp; &nbsp; return setTimeout(function(){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(flag && $(_this).val() !== ''){//判断flag和输入的值&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return console.log($(_this).val());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; },0)&nbsp; &nbsp; })</script>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript