为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

波斯汪 2019-02-12 12:11:37
$("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");        }    });    });请问一下为什么当我要输入中文,我中文还没打出来的时候,搜索框就出来了,这是我代码的问题,还是我少了哪一步判断啊????前端辣鸡小白,希望有大神不嫌弃愿意帮帮我。。感激
查看完整描述

1 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

监听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>


查看完整回答
反对 回复 2019-02-13
  • 1 回答
  • 0 关注
  • 353 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信