Javascript setTimeout不等待指定的毫秒数

Javascript setTimeout不等待指定的毫秒数,javascript,jquery,settimeout,onkeyup,Javascript,Jquery,Settimeout,Onkeyup,我希望在几秒钟的不活动(使用onKeyup事件)后有一个表单触发submit 我的代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8

我希望在几秒钟的不活动(使用
onKeyup
事件)后有一个表单触发submit

我的代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Title</title>
    </head>
    <body>
        <form id="getJSONForm">
            <textarea rows="1" cols="10" onKeyUp="onKeyUp()"></textarea>
            <input type="submit" value="Submit" id="getJSON" />
        </form>

        <div id="result"  class="functions"></div>

        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript">
            $.ajaxSetup ({
                cache: false
            });

            var timer;

            function onKeyUp() {
                stoper();
                timer = setTimeout ( $("#getJSONForm").submit(), 10000 ); 
            }

            function stoper() {
                clearTimeout(timer);
            }

            $("#getJSONForm").submit(function(){
                    $("#result").html("hello");
                    return false;
            });
        </script>
    </body>
</html>

标题
$.ajaxSetup({
缓存:false
});
无功定时器;
函数onKeyUp(){
采场();
timer=setTimeout($(“#getJSONForm”).submit(),10000);
}
函数停止器(){
清除超时(计时器);
}
$(“#getJSONForm”).submit(函数(){
$(“#结果”).html(“你好”);
返回false;
});
但是。。。表单似乎在每次
onKeyUp
事件中都会提交。它不会等待计时器达到指定的10000毫秒。
是否有办法解决此问题?

设置超时()的第一个参数必须是函数对象(或字符串,但不应使用它)。像这样:

timer = setTimeout(function () {
   $("#getJSONForm").submit();
}, 10000);
您当前正在传递
$(“#getJSONForm”)的值。submit()
setTimeout()
,这可能不是您想要的

除此之外,我建议使用jQuery的事件处理而不是HTML参数。它更加优雅、灵活、易于维护。您可以这样做:

$('#getJSONForm textarea').keyup(function () {
   // the content of your onKeyUp() function goes here
});
看看这个话题