本想在系统中实现类似baidu或者是google的那种输入文字或者数字,然后会弹出自动下拉列表的功能,但是我做出来的东西,总是一卡一卡的。原因可能是我在文本框中加了事件 onpropertychange 调用列表函数导致的。
我现在的想法是,不在文本框中添加事件 onpropertychange ,而是 让系统自动检测 文本框是否是处于输入状态,如果处于输入状态,那么每隔100ms去检测一次数据,这样就可以避免卡了。
这个只是想法,望高手指教下,谢谢先。
ps:我已经查过诸多资料了 都没有得到
我现在的想法是,不在文本框中添加事件 onpropertychange ,而是 让系统自动检测 文本框是否是处于输入状态,如果处于输入状态,那么每隔100ms去检测一次数据,这样就可以避免卡了。
这个只是想法,望高手指教下,谢谢先。
ps:我已经查过诸多资料了 都没有得到
解决方案 »
- 页面多次异步获取数据如何只使用一个数据连接
- 检测客户端文件~~
- 请教关于架构的问题
- 跪求各位高手,能看懂这个简短的Demo吗?
- 怎样用鼠标拉一个矩形框并将框内所有的div选中?
- jquery 三级tree插件之类的 如何实现点击展开当前节点 折叠其他节点
- 怎样去掉<a href="xx.html">xx.html</a>的<a href="xx.html"></a>,只留下xx.html
- 如何能定义一个textarea,这个textarea的大小随着文本的大小而变。。。(详细内见)
- 寻求javaScript的帮助文档。
- 急求帮助 jQuery UI - draggable 拖曳 目标层重叠的问题
- jquery ui dialog 返回值问题
- jquery分页插件问题,分页总数无限大
============
那还不如onpropertychange呢
现在就是需要数据准备完,就推送到前台去,而不是卡在那儿,等待数据
//检查是否有延时的方法等待执行
if(window.hasWait){
window.clearTimeout(window.hasWait);
}
window.hasWait = window.setTimeout("......", 300);//这个时间,你自己多试验来决定用多长
问题是你的后台查询和数据库设计上。这种自动提示功能,应该从很方便很有效率取到数据的地方得到,怎样也不能是这样麻烦的即时过程。如果这些数据不适合提前准备到一个专门的表或放到APPLICATION变量里,那这个自动提示是否应该加,就需要重新考虑了。不是凡是有点用的就要添加上去,要根据实际情况,使用合理有度。
如果你的后台是PHP,可以可以考虑使用内存缓冲,缓解数据库压力!其次就是数据库尽可能优化处理,能使用存储过程,最好不过了,其他后台我想也有对应的办法!
你要使用延时执行操作,不是每次onpropertychange的时候都发送ajax,这样如果用户输入快的时候你可以clear掉上一次的延时操作。要想速率更加快一点,可以使用缓存。将关键字作为键存入json对象中,这样再增加或者缩短关键字的时候判断是否有缓存,有就用缓存的,没有再发送ajax请求
1.浮动的div(也许你的不是div)最好等输入完或选中了选项再隐藏。
2.不要用 Xdiv.innerHTML = "<div>"+"新的HTML代码"+"</div>"。请学会用DOM插入。Jquery很好用,可以用这个来做DOM操作。
附以前做的部份代码做。参考function fly_show(){
$("#fly").empty();
for (var i = 0; i < Cu_A.length; i++) {
var cc = $("#_fly").clone();
cc.html(Cu_A[i][1]);
(function($){
var i_x=i;
cc.click(function(){
toT1(i_x);
});
})(jQuery);
cc.appendTo($("#fly"));
}
$("#fly div").hover(function(){$(this).addClass("mover");},function(){$(this).removeClass("mover")});
}
http://scriptlover.com/agent/?url=/controls/suggest/
http://scriptlover.com/agent/?url=/controls/suggest.rar.gz当然如果为了练练手,还是可以的。以上是个参考。