$("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>
添加回答
举报
0/150
提交
取消