tuc*_*son 3 javascript jquery settimeout onkeyup
我希望在几秒钟不活动(使用该onKeyup事件)后触发提交表单.
我的代码如下:
<!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>
Run Code Online (Sandbox Code Playgroud)
但是......表格会在onKeyUp看似每一个事件时提交.它不会等待计时器达到指定的10,000毫秒.有没有办法来解决这个问题?
第一个参数setTimeout()需要是一个函数对象(或一个字符串,但你不应该使用它).像这样:
timer = setTimeout(function () {
$("#getJSONForm").submit();
}, 10000);
Run Code Online (Sandbox Code Playgroud)
您当前正在传递$("#getJSONForm").submit()to 的值setTimeout(),这可能不是您想要的.
除此之外,我建议使用jQuery的事件处理而不是HTML参数.它更优雅,更灵活,更易于维护.你可以这样做:
$('#getJSONForm textarea').keyup(function () {
// the content of your onKeyUp() function goes here
});
Run Code Online (Sandbox Code Playgroud)
查看有关此主题的API文档.