日期:2014-05-16  浏览次数:20365 次

js/jquery 多次触发事件只执行一次
我是想实现类似于autocomplete样子,当文本框一直在输入时,不会执行操作,当停下来一段时间后再去执行操作
且只执行一次,我的代码如下,每次都执行好几次。。有什么解决的办法没有。

HTML code

<input type="text" />



JScript code

$(function () {
    var t;
    $("input").keypress(function () {
        if (t != undefined) {
            clearTimeout(t);
        }
    }).keyup(function () {
        t = setTimeout("geta()", 1000);
    });
});

function geta() {
    alert();//在这里每次都会弹出好几次。。
}



------解决方案--------------------
须得先知道你对一直在输入和停止的定义
一直在输入指的是只需焦点一直在文本框,还是需要在一定时间内有按键
如果是前者,只需在失去焦点的事件函数里面执行代码,如果是后者
则获得焦点时定义计时器,在一段时间后执行代码。如果有按键,则修改延时时间,或者注销前计时器重新定义一个
------解决方案--------------------
楼主参考下


http://topic.csdn.net/u/20120518/10/de1bae74-f597-441d-b72e-d0fda66e6e81.html
------解决方案--------------------
改成这样测试一下,注意浏览器兼容问题。
$(function () {
var t;
$("input").keypress(function () {
if (t != "undefined") {
clearTimeout(t);
}
});
$("input").keyup(function () {
t = setTimeout("geta()", 1000);
if(t>2) 
{
clearTimeout(t);
t = setTimeout("geta()", 1000);


});
});

function geta() {
alert(1);//在这里每次都会弹出好几次。。
}