<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<div>请输入关键字:<input id="keyWords" type="text" /></div>
<div id="getSearch"></div>
<script type="text/javascript">
var sInput = $('#keyWords'), timer;
sInput.focus(); sInput.on('input', function () {
clearTimeout(timer);
timer = setTimeout(function () {
$('#getSearch').append('<p>' + $('#keyWords').val() + '</p>');
}, 250);
}); if (document.all) {
$('#keyWords').each(function () {
var that = this; if (this.attachEvent) {
this.attachEvent('onpropertychange', function (e) {
if (e.propertyName != 'value') return;
$(that).trigger('input');
});
}
})
}
</script>上面的代码主要是监听用户对文本框的输入情况,可应用在各种ajax数据交换的功能上。不过由于服务器的性能不同、客户端的环境不同、客户输入速度的不同,可能会有不同的用户体验,对于数据量较大的网站,当用户输入的结果进行异步请求并返回数据的时间可能会比较长,如果用户输入速度较快,可能会导致数据还未返回又再一次的被提交上去,有时会出现页面假死状态。监听文本框使用setTimeout来延迟程序的执行时间,虽然也是一个不错的办法,但是也会降低一点用户体验,就是感觉返回结果慢了一点。我的想法是监听用户输入完毕再执行代码,不过要如何监听用户是否输入完毕这个就比较难实现了,或者使用xml数据,不过对数据量大的情况还不是很好解决。欢迎大家来讨论怎样才能设计出最佳的代码,拥有最佳的用户体验!能够提供案例最好。inputajax优化监听
解决方案 »
- 在禁用viewState的情况下 如何获取Fck的Value值
- GridView绑定到SqlDataSource 出现的问题 求救高手解决
- 谁来帮我看看问题。加QQ帮我远程看下吧,不知道出了干什么情况,。。。
- 获得客户端IP的问题.
- 关于空格与回车是如何存进数据库的
- 如何用JS来截取字符串?
- hchxxzx(NET?摸到一点门槛) 请进
- asp.net(C#)中TreeView怎么让它不重复绑定?求指导
- 急,DATALIST控件中,每项绑定了两个dropdownlist,两个dropdownlist之间有联动,DATALIST中的项数是根据数据库数据动态变化,怎么写两个dropd
- 一个简单问题
- 一个关于.NET与数据库连接的问题
- 关于loginview控件不能显示用户名(求高手!)
想办法看能不能只在js客户端处理
帖子的代码只是个例子来的,有说明可以应用ajax数据交换的功能上
timer = setTimeout(function () {
$.ajax();//实现无刷新服务器数据交换
}, 250);
xml数据量小的时候要比读取数据库快很多吧