我想做类似google的文本框,输入第一(多)个字母,以该字母开头的条目就列出来 我想做类似google的文本框,输入第一(多)个字母,以该字母开头的条目就列出来所有条目都已经在库里了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 主要还是查询sql写对. 用到 "%" sql中表示任意长度字符事件用onchange 估计看google做出来的效果挺炫的然后大家都想做吧,onchange不停的去Ajax提交与获得数据,感觉上这样做极度浪费性能,网速慢得时候数据还没接收到用户都输入完要输入的东西了....如果说要快的话就是在页面上缓存数据,直接从里面找,不过这样做又不能保证页面在未刷新的情况下数据同步,为了同步又只好定时请求数据...要做好这个功能不简单,期待高手给出最优方案,关注中 听说google每天要换1卡车硬盘.这也许就是你说的,数据已经存好了.一般人还真玩不起. 推荐一个很好用的控件:类似GOOGLE输入框的自动提示框控件http://www.msproject.cn/people/icscs/article/106.html 这是我收藏的一个页面,来自:codeproject,Auto-complete Control :http://www.codeproject.com/KB/scripting/jsactb.aspx 不用这么复杂,我在想把所有条目先放在数组里,然后再查找是否简单点,是asp程序 不用这么复杂,我在想把所有条目先放在数组里,然后再查找是否简单点,是asp程序 设想一下,如果我输入a,符合a的假设只有50条,我们不知道他在数组的什么位置,就得比较4000次,以保证把所有a开头的数据拿出来,姑且不说效率,从实用性出发,在那个选择菜单里有50个选择,用户一个个去看?他不会这么做,那么他会去输入第二个字符,b,然后在已经找到的50条里面继续对比,做起来js不是很难,就是一个异步获取数据,然后显示,重点是sql哪里,要控制出来的数据,不然没效果。页面的话上面有代码了,主要是后台。我提议楼主先协商好怎么选择数据先。数据才是程序的灵魂 是的,页面中的代码只是些js事件,费些劲,但是还是可以写得出来。这个效果的关键在于:搜索算法,因为数据量大的话,搜索做好优化才行。如果我输入了A,有非常多的数据,怎么弄,这不是页面左右的,这是服务器那边实现的(如果用js,那不得费死劲),服务器那边最多给出10条记录,难点在这些记录的选择上,这就涉及到搜索算法了,页面只负责显示(你看百度谷歌搜索几十万条记录,不到1秒就出来结果了,这就是优化的结果。)还是说,页面只做最简单的部分,一部分js而已。核心在搜索算法,这个算法根据业务,会不同。 费劲还不只,这样个判断法,页面不假死都难,你想看你要比较的话就必须截取字符,1000条截取1000次,其中绝大部分是没必要的截取,因为那些本身就不是用户需要的信息....搞定数据来源才做页面,页面无非就是div显示提示先,Ajax异步请求数据,然后截字符对比等一些简单的操作,不是很难做的。只是烦杂而已。得搞定搜索 DronFw,全称Dron Framework,她负责管理一个站点中客户端的脚本类库,使用 DronFw 的网页不需要关心所引用类的具体位置,只要传递相应的类名给 DronFw 便可以引用该类了,一个站点只需在根目录下放一个 DronFw,站点内无论路径多么复杂的网页都可以使用 DronFw。 导入包,就ok了 问题进一步简化了,所有条目都读出来了,在select中,这样有没有比较简单的办法啊? 如果所有条目都读出来了,那页面上实现的方案就很多了,比如用extjshtml中:<input type="text" id="local1"/>js中: var data = // 所有数据 [ ['1','Lislie','D005','male'], ['2','Merry','D004','female'], ['3','Edison','D003','male'], ['4','Mark','D002','male'], ['5','Leeon','D001','male'] ]; var ds = new Ext.data.Store({ // 数组reader proxy : new Ext.data.MemoryProxy(data) , reader: new Ext.data.ArrayReader({},[ {name: 'id'}, {name: 'name'}, {name: 'depno'}, {name: 'sex'} ]) }); ds.load(); // 加载 var storeList = new Ext.form.ComboBox({ store: ds, valueField:'id', typeAhead: true, displayField: 'name', triggerAction: 'all', emptyText:'Select a store...', mode: 'local', selectOnFocus:true, applyTo: 'local1', // 指向页面input width:135 });使用: alert(storeList.getRawValue()); 所有条目都读出来,在select中。大概4000多条,每条长度10个字符左右,都是字母和数字输入字母和数字,相关的记录就被筛选出来 前台ext得combox dwr调用,库中存着检索过得数据内容,每次查询后置入缓存,或者之间定义个静态变量,这样只一次得数据读取。得到得数据再自己弄。我是做了个相似度得排序 flot生成直方图 求助大神 网页中的javascript脚本写入到js文件引用怎么不行呀 这是什么意思? Array的splice方法 jquery动画 北京地区诚聘javascript高手 怎样设置超链接页面的‘打印设置’--在线 在线等待!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 如何用javascript实现淡入淡出的效果 关闭弹出窗口的JavaScript事件冒泡捕获问题 何实现随鼠标移到切换到对应的内容 不是高手就不要进来,极端问题?
估计看google做出来的效果挺炫的然后大家都想做吧,onchange不停的去Ajax提交与获得数据,感觉上这样做极度浪费性能,网速慢得时候数据还没接收到用户都输入完要输入的东西了....如果说要快的话就是在页面上缓存数据,直接从里面找,不过这样做又不能保证页面在未刷新的情况下数据同步,为了同步又只好定时请求数据...要做好这个功能不简单,期待高手给出最优方案,关注中
听说google每天要换1卡车硬盘.这也许就是你说的,数据已经存好了.一般人还真玩不起.
类似GOOGLE输入框的自动提示框控件
http://www.msproject.cn/people/icscs/article/106.html
Auto-complete Control :
http://www.codeproject.com/KB/scripting/jsactb.aspx
如果我输入了A,有非常多的数据,怎么弄,这不是页面左右的,这是服务器那边实现的(如果用js,那不得费死劲),服务器那边最多给出10条记录,难点在这些记录的选择上,这就涉及到搜索算法了,页面只负责显示(你看百度谷歌搜索几十万条记录,不到1秒就出来结果了,这就是优化的结果。)
还是说,页面只做最简单的部分,一部分js而已。核心在搜索算法,这个算法根据业务,会不同。
<input type="text" id="local1"/>js中:
var data = // 所有数据
[
['1','Lislie','D005','male'],
['2','Merry','D004','female'],
['3','Edison','D003','male'],
['4','Mark','D002','male'],
['5','Leeon','D001','male']
];
var ds = new Ext.data.Store({ // 数组reader
proxy : new Ext.data.MemoryProxy(data) ,
reader: new Ext.data.ArrayReader({},[
{name: 'id'},
{name: 'name'},
{name: 'depno'},
{name: 'sex'}
])
}); ds.load(); // 加载
var storeList = new Ext.form.ComboBox({
store: ds,
valueField:'id',
typeAhead: true,
displayField: 'name',
triggerAction: 'all',
emptyText:'Select a store...',
mode: 'local',
selectOnFocus:true,
applyTo: 'local1', // 指向页面input
width:135
});使用: alert(storeList.getRawValue());
大概4000多条,每条长度10个字符左右,都是字母和数字
输入字母和数字,相关的记录就被筛选出来