DelayedTask对象主要用于实现输入缓冲的功能,在指定的时间间隔内,如果用户没有操作触发事件,就会自行实际触发函数。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ext.util.DelayedTask</title>
<link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" />
<script type="text/javascript" src="../extjs/bootstrap.js"></script>
<script type="text/javascript" src="../extjs/ext-lang-zh_CN.js"></script>
<style type="text/css">
#numList span {
width: 100px;
height: 20px;
display: block;
}
</style>
<script type="text/javascript">
/**
* DelayedTask对象主要用于输入缓冲的功能,在指定的时间间隔内,如果用户没有操作触发事件,就会执行触发函数。
* DelayedTask对象提供以下两个方法:
* 1.cancel:取消最后的队列任务
* 2.delay:取消当前任务,开始一个新的任务
*
* 下面通过一个示例来学习如何使用DeldayedTask对象
* (1)功能描述:
* 如果在1秒内没有向输入框中输入任何数字,就会根据文本框中的数值把列表(有50个数字)中小于该数值的值过滤掉
*/
Ext.onReady(function() {
html = "";
for (var i=0; i < 50; i++) {
html += "<span>" + Math.floor(Math.random() * 1000) + "</span>";
};
var el = Ext.getDom("numList");
el.innerHTML = html;
//创建一个DelayedTask对象的实例
var task = new Ext.util.DelayedTask(function() {
var els = Ext.getDom("numList").childNodes;
var value = parseInt(Ext.getDom("input1").value);
for (var i=els.length-1; i>=0; i--) {
var v = parseInt(els[i].innerHTML);
if(v < value) {
els[i].style.display="none";
} else {
els[i].style.display="block";
}
};
});
//为输入框绑定keypress
Ext.EventManager.on("input1", "keypress", function(e, el) {
var key = e.getKey();
if(key < e.ZERO || key > e.NINE) {
e.stopEvent();
}
task.delay(1000);
});
});
</script>
</head>
<body>
<input id="input1" value="" />
<div id="numList"></div>
</body>
</html>