- 浏览: 171424 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
mncc:
太好了!!!Mark一下!不过貌似那个冒泡的还少个右下角吧? ...
Google Maps 图标地址收藏 -
ivorytower:
去年5月捡了命回来,现在不评论那些豆腐渣工程……
汶川地震留给我们什么?单单建什么地震纪念馆是没有用的 -
lgx2351:
wtusmchen 写道blog写的不错啊,以后多过来学习:) ...
js学习笔记2-函数 -
wtusmchen:
blog写的不错啊,以后多过来学习:)
js学习笔记2-函数
文本框在当用户输入时,常常需要把相近的信息提示给用户,以方便用户选择。
总体的思路是:
在txt文本框的onkeyup事件中,发送ajax请求,到数据库去取相似的记录,把得到的结果构成字符串传到前台,再在前台里拆分来按要求显示。
ajax请求到后台取数据的代码忽略,只取js前台的代码:
var eventElement; function inputSuggest() { eventElement = event.srcElement || event.target; var eventEleValue = eventElement.value; if(eventEleValue){ var url = urlPrefix + "/jsp/vou_record_mgr/getLinkBrandAndModel.do"; pars = "EventEleValue="+encodeURIComponent(encodeURIComponent(eventEleValue)); new Ajax.Request( url, { parameters: pars, method:"get", onCreate:function(){ }, onComplete:function(originalRequest){ //alert(originalRequest.responseText); if(originalRequest.responseText.indexOf("#")==-1){ if($("reslut_div")) { $("reslut_div").innerHTML = ''; $("reslut_div").style.display = 'none'; return; } } var str = originalRequest.responseText.split("#"); var suggestStr = "<table width=\"100%\" border=\"1\" cellpadding=\"1\" cellspacing=\"1\">"; for(i=0; i < str.length - 1; i++) { suggestStr += '<tr><td onmouseover="onmouseOver(this);" onmouseout="onmousetOut(this);" onclick="setSuggestValue(this.innerHTML);" class="onmouset_out">' + str[i] + '</td></tr>'; } suggestStr += "</table>"; //先清空 if($("reslut_div")) { $("reslut_div").innerHTML = '';; } if(!$("reslut_div")){ var res_div = document.createElement('div'); res_div.id = "reslut_div"; }else{ res_div = $("reslut_div"); } res_div.innerHTML = suggestStr; res_div.style.background = '#99CCFF'; res_div.style.position='absolute'; res_div.style.left=frontShowMgr.getxy(eventElement).X+'px'; res_div.style.top=frontShowMgr.getxy(eventElement).Y+eventElement.clientHeight+'px'; res_div.style.width = eventElement.clientWidth +'px'; res_div.style.height = 150 +'px'; res_div.style.overflow = 'scroll'; res_div.style.border = '1px'; if(!$("reslut_div")){ document.body.appendChild(res_div); } res_div.style.display = ''; } } ); } } function onmouseOver(div) { div.style.background = '#FFDEAD'; div.style.cursor = 'hand'; } function onmousetOut(div) { div.style.background = '#99CCFF'; div.style.cursor = 'auto'; } function setSuggestValue(value) { eventElement.value = value; if($("reslut_div")) { $("reslut_div").innerHTML = ''; $("reslut_div").style.display = 'none'; return; } }
以下注意的几个知识点是:
1.当要动态的需要在前台展示一些东西的时候,常常的思路就是:
先document.createElement('div'),设置这个元素innerHTML和属性,最后document.body.appendChild()。
注意的是,有时候我们利用document中已存在的div来进行appendChild(),但如果没有这个已存在的div也没有必要写一个,只需要用document.body就可以了。因为有时候这个联动的下拉框可能做为一个jsp供其它人直接引用,如果你在jsp里create了div,引用多个这个jsp就会出现多个这样的div,这样就会有问题了。
2.用event.srcElement || event.target来获得事件触发对象。
3.用encodeURIComponent(encodeURIComponent(eventEleValue))来进行对汉字的url编码传递
3.样式方面:
设置元素的height为固定值且设置overflow,使得可以拖动滚动条。
元素的clientWidth为元素的宽度,而不是想当然的width或是style.width
把table的td的值赋给txt,用this.innerHTML来赋值过去
设置元素的position为absolute,设置元素的left,top为event元素的x,y值
getxy:function(e){ var x = 0; var y = 0; while(e){ x += e.offsetLeft; y += e.offsetTop; e = e.offsetParent; } return {X:x,Y:y} },
最终的效果如下:
发表评论
-
在一个定时器里频繁发ajax请求
2011-04-11 10:07 1732在一个定时器里频繁发ajax请求,最好设置一个全局变量,当请求 ... -
前台开发总结
2011-01-12 10:35 7691、如果在频繁地发送ajax请求,最好在前面的请求发送完成返回 ... -
TD中长串英文字母不能自动换行而汉字却可以自动换行
2010-12-23 10:06 1912例如:aaaaaaaaaaaaaaaaaaaaaaaaaaaa ... -
Google Maps 图标地址收藏
2010-11-27 10:46 2778Google Maps 图标 - ... -
js乱码
2010-05-30 16:08 01)在同一个工程下没有问题,可是如果跨工程的话,且引入的js有 ... -
ajax请求提供接口的讨论
2009-12-26 15:33 1028要提供一个查询某点周边的最近设施的功能给同事,在gis端的实现 ... -
ie8与ie6取form的讨论
2009-12-16 10:49 1368多frames下,在ie6下通过frames[i]为取得某个f ... -
把一个jsp分为两个div布局记录
2009-12-15 16:41 5585一个jsp页面想分成左右两块分开显示两块内容。这种效果很不错, ... -
js取整数四舍五入
2009-11-21 22:08 3383http://blog.csdn.net/Feiin/arch ... -
读“javascript权威指南”笔记(更新中。。。)
2009-11-14 13:00 0第一章: 第二章: 第三章: 第四章: 第五章: 第 ... -
grid拖动列头改变列宽
2009-10-21 17:19 1562grid中,当某一单元格的内容很多时,要能够拖动grid标题行 ... -
js常用功能-drag功能总结
2009-09-18 13:50 1193在做web开发中,拖动一个元素是很常见的功能,特别是对于浮动层 ... -
常用功能-tip相关知识总结
2009-09-18 08:48 1198在应用开中很常用的功能是tip,比如鼠标放在某个需要说明的元素 ... -
js学习笔记4-事件和事件处理
2009-09-16 22:18 9841. 总述: 本章将讲三种完全不同的不兼容的事件处理模型 ... -
构造结果集实现类似grid显示
2009-09-16 20:24 868在做应用开发中,最经常的操作是到后台数据库去获取数据,在前台用 ... -
grid里用右键来实现功能菜单
2009-09-15 20:22 1178在自定义grid中,如果一个grid的列很多,窗口无法显示这么 ... -
js学习笔记3-构造函数、类和原型
2009-09-06 16:18 26563. 构造函数、类和原型总述:对象是我们很熟悉的,常在程序中用 ... -
gird分页时form与url参数的探讨
2009-09-05 22:35 1140大家可能很常用一个查 ... -
js学习笔记2-函数
2009-09-02 23:01 13782. 函数 2.1函数直接量函数直接量是用作表达式,而不是用作 ... -
js学习笔记1-对象和数组
2009-08-19 23:03 8411. 对象和数组 总述对象 ...
相关推荐
javascript 文本框下拉提示与cookie应用实例
实现对文本框的匹配,比如已存在的匹配集合包含:“abc”、"aa"、"bb" 输入a时就会匹配到"abc"和"aa
JavaScript 文本框下拉提示,可以自己添加数据
自定义 wpf 文本下拉框控件,输入字符自动模糊查询,下拉显示出来,可配置,输入多长后去服务端拿数据显示,也可配置,输入文字后几毫秒去查询
JavaScript 文本框下拉提示,类似百度和Google的输入框提示效果,这里为了演示时加载的速度比较快,选用了一些数据,输入“1”可更好的看到效果。
输入框下拉提示,实时匹配输入数据.提供jquery部分代码,后台的调用的数据只要返回符合相应的json格式即可
C#文本框输入提示功能 下拉框 用代码可供查看
文本框下拉列表自动提示效果,用户在输入一个或多个值会自动提示数据库里面的值 RecommResource.aspx和RecommResource.aspx.cs文件是可以动态生成JS文件,另外外部还有一个JS
文本框输入值时,根据输入的值过滤以下拉框形式显示在文本框下面,支持code值一起显示,取值,支持扩展,属于公用。数据源改成自己的根据输入的值过滤查询
下拉菜单选择其他时弹出文本框输入,这个很适合网站中的简历填写。
在文本框中输入文字时,在数据源(所有的提示项)查找匹配的选项,若匹配的选项数量>0,在文本框下方显示下拉列表供用户选择; 自动补全: 在匹配的选项中选择最合适的一项(通常为第一项),与用户输入做对比,...
用ajax和js实现的文本框提示,ajax搜索下拉菜单提示js源代码
jquery输入框下拉提示插件,,Select风格的下拉提示,鼠标只需点击文本框后,即可下拉出相关内容项,和搜索提示类似,基于jQuery的输入框提示功能,测试发现jQuery对这款插件的精确匹配不是太好,有时候会提示一些不...
C# 自定义下拉选择框(下拉智能提示文本框)
JSP 搜索框下拉提示实例代码,配合有数据库,Access,利用JSP读取数据库,Ajax调用并返回给...点击文本框出现下拉提示,输入的时候会自动匹配搜索关键字,目前百度、Google、360等主流浏览器都具备搜索框智能提示功能。
一个非常好用的文本框输入提示的jQuery插件。 个人编写并经个多个项目的测试。已完善到1.5版本。 js文档中注释着已经过测试的例子,可做...②本文本框提示数据可以从其他下拉列表框中取数据解决反复链接数据库的问题。
文本框Input文字自动完成Suggest提示插件,一款Suggest搜索提示插件,暗藏有淘宝首页、有啊首页、Google搜索首页、来点广告搜索的众多下拉提示,实际上演示效果与其真实网站上的相关无几,使用了Yahoo网站的一个搜索...
js文本框异步提示(可以自适应,支持多种灵活调用方式),只一个js文件即可,调用非常方便, ();" />
在自己的网页里套上百度搜索引擎,google搜索引擎,文本框中输入文字会显示下拉提示自动补全文字,点百度一下打开百度显示你搜索的文字.zip