jquery给文本框绑定按键事件并延时触发,只触发一次!

$("#id").bind("keyup",function(){console.log(123);});<inputid="id"type="text"/>我想要在上面... $("#id").bind("keyup",function(){
console.log(123);
});
<input id="id" type="text" />
我想要在上面的代码上做个延时触发,时间为1秒!比如:现在我在文本框中依次输入a,b,c(间隔都在1秒内),但上面的代码会打出3次123。但我想要的是只打出一次123,如果我的abc输入的间隔在1秒外,就打出多个123!来高人指点下!
展开
 我来答
nnryx
2015-07-24
知道答主
回答量:15
采纳率:0%
帮助的人:5.8万
展开全部
                var flag = false;
var timer;
$(function() {
$("#id").bind("keyup",function(){
clearTimeout(timer);
flag = true;
timer = setTimeout(function() {
flag = false;
console.log(123);
}, 1000);
});
});

这个应该是可以的吧。。你试试。。


追问
不错,我想要的就是这个效果
sthov
活跃答主

2015-07-24 · 以软件项目文档为主,兼顾技能知识手册。
sthov
采纳数:205 获赞数:280

向TA提问 私信TA
展开全部

你可以这样写:

$("#id").unbind("keyup");
$("#id").bind("keyup",function(){
   console.log(123);
});
追问
不懂你为什么这么写,和我的题意完全不一致!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2016-09-21
展开全部
jQuery(function ($) {
var delay = (function () {
var timer = 0;
return function (callback, time) {
clearTimeout(timer);
timer = setTimeout(callback, time);
};
})();

$('#id').keyup(function () {
delay(function () {
console.log('test');
}, 1000);
});

})
追问
大神,你的这个太牛逼!我自认为jquery还不错,但你这个我很多没看懂!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
loveredzheng
2015-07-25 · TA获得超过171个赞
知道答主
回答量:60
采纳率:0%
帮助的人:67.7万
展开全部

你这样肯定不行的,一定会输出三次

你不要用按键事件,用光标离开文本并且文本有修改事件

change

$(function(){
    $("文本id").change(function(){
        //执行延迟
        //这里举例改变文本背景颜色
        //$(this).css("background-color","#CCC");
    });
});


希望可以帮到你!

追问
我一定要用按键事件!change事件体验下不好!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
憋不住事儿
2015-07-25 · TA获得超过603个赞
知道小有建树答主
回答量:570
采纳率:85%
帮助的人:167万
展开全部
延时触发只是延时,不会减少触发次数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式