在项目当中,经常会有输入省市名称的要求,如果采用下拉框的形式,用户选择会很不方便,因为选项太多。这种情况下可以采用AJAX自动完成功能。 见下图:
首先看页面的标签(部分):
<td>航段起点</td>
<td>
<html:hidden property="cityBegin" /> <!-- 这里存放的是实际存储的ID-->
<html:text property="cityBeginText" onkeyup="search('cityBeginText','cityBegin','popup')"/>
<div style="autodiv" id="popup"><table><tbody></tbody></table></div>
</td>
search函数具体实现:
function search(inputId,outputId,divId){
init(inputId,outputId,divId); //初始化相关页面元素
if ((inputField.value.length<=0)||(event.keyCode==13)){
outputField.value="";
return false;
}
var tmp= inputField.value;
var url='autocomplete.do';
var pars ='action=city&city=' + tmp;
var myAjax = new Ajax.Request(
url,
{
method: 'get',
parameters: pars,
onComplete: this.showResponse //这里是回调函数。
}
);
}
在服务器端,返回的是xml格式的数据。形如:
<response>
<item>
<id>1</id><value>南京市</value>
</item>
<item>
<id>2</id><value>南昌市</value>
</item>
</response>
showResponse的任务有:解析返回的xml数据,计算div的位置,填充div。
function showResponse(originalRequest){
clearDiv(); //先清空。
outputField.value="";
var values=originalRequest.responseXML.getElementsByTagName("value");
var ids =originalRequest.responseXML.getElementsByTagName("id");
var size = values.length;
setOffsets(); //计算div的位置
var row, cell, txtNode;
for (var i = 0; i < size; i++) { //开始填充
var nextNode = values[i].firstChild.data;
var nextId = ids[i].firstChild.data;
row = document.createElement("tr");
cell = document.createElement("td");
cell.onmouseout = function() {this.className='mouseOver';};
cell.onmouseover = function() {this.className='mouseOut';};
cell.setAttribute("bgcolor", "#FFFAFA");
cell.setAttribute("border", "0");
var input = document.createElement("input");
input.setAttribute("type","hidden");
input.setAttribute("name","id");
input.setAttribute("value",nextId);
cell.onclick = function() { populateName(this); } ; //注意这个函数populateName
txtNode = document.createTextNode(nextNode);
cell.appendChild(txtNode);
cell.appendChild(input);
row.appendChild(cell);
tbody.appendChild(row);
}
completeDiv.appendChild(table);
}
populateName函数的作用是什么呢?当鼠标在下拉的div上选择了某一行(地区)的时候,该地区在数据库端的id被存储到隐藏的input当中,这里是“cityBegin”,该函数的代码:
function populateName(cell){
inputField.value = cell.firstChild.nodeValue; //value被赋给了“cityBeginText”
outputField.value=cell.lastChild.value; //id被赋给了“cityBegin”
clearDiv();
}
当该页面被提交后,服务器端先检查“cityBegin”的值空否,如果不空,则不需要再根据“cityBeginText”的值查询数据库,避免了地区id的重复查询。 当然,前提条件是地区信息是用户从下拉div当中选择的。
- auto.rar (1.1 KB)
- 描述: 自动完成的js代码。
- 下载次数: 1512
分享到:
相关推荐
Ajax文本框自动完成示例,采用ajax技术做的小例子,完成文本的自动输入功能。
程序用Jsp作为客户端,发送异步请求到Servlet,Servlet模拟数据库操作,返回结果,客户端...例子包含自动提示,自动更新,google自动完成,进度条等,每个例子都有一个readme.txt文件,里面介绍例子的功能和重要代码.
这是给学生演示Ajax的一个例子。 后台是Servlet,数据库是MSSQLServer2005,数据量是从AdventureWorks中拷贝过来的。 虽然是演示,但是并不是HelloWorld那种不实用的例子,而是包含两个经典的应用:用户名检测和...
Asp.net Ajax ControlToolkit 自动完成功能和自动拒绝垃圾发布程序和拖曳排序和评分功能的例子
一个最小的 AJAX 自动完成,没有依赖项。 仅缩小了 2kb。 测试: Chrome合金 苹果浏览器 Safari iOS 适用于: 鼠 键盘(用于选择的箭头键) 例子 <input type="search" id="autocomplete" placeholder=...
ajax示例,自动完成功能和textbox控件结合起来,成为一个自定义控件
4.9 提供自动完成 116 4.10 小结 123 第5章 构建完备的ajax开发工具箱 125 5.1 使用jsdoc建立javascript代码的文档 125 5.1.1 安装 126 5.1.2 用法 126 5.2 使用firefox扩展验证html内容 129 5.2.1 ...
分享一篇无意间发现的自动完成源码。这里测试的时候使用的是数组,实际使用的时候,我们换成Ajax从服务器端获取的方式就OK了。提示:可以直接保存到一个html文件中查看效果。 代码如下:<!doctype html><...
boa可 执行文件的路径: /usr/local/bin/boa, 可以设置为: 系统启动的时候, 这个进程自动启动 boa.conf 文件的重要参数 保存html文件的目录 DocumentRoot /www 可以将这个目录, 设置为samb共享文件夹的目录, 方便...
jQuery UI Autocomplete是jQuery UI的自动完成组件,通过ajax请求的JSON数组、JSONP来获取数据,实现自动补全功能
11.5 添加Ajax自动保存功能 11.5.1 修改库的代码 11.5.2 自动保存信息到数据库 11.6 重构 11.6.1 定义构造函数 11.6.2 修改AjaxWindowsjs库 11.6.3 指定protal命令 11.6.4 执行Aiax处理 11.6.5 重构报告 11.7 小结 ...
程序描述:本章模仿Google ig,使用Ajax技术实现一个个性化主页系统。通过拖拽方式设置主页,当完成拖拽窗口时,自动保存布局,使用户可以随时根据喜好来设置布局。 /login.jsp 登录页面 /homepage.jsp ...
GET 或 POST 参数搜索显示所有布尔值显示焦点上的所有值错误的打回来指向函数的指针第一个参数是结果第二个参数是指向自动完成包装器的指针空值清除按下清除按钮时的函数调用空值班级名称突出显示元素时的类名(不带...
下面是做的一个小例子,由两个页面组成。 city.html页代码如下: 得到城市相应的信息 输入城市的拼音: 级别: 负责人: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] zipcode.jsp代码如下
包括四个小例子: (七)自动完成示例 (六)工具提示 (五)滚动条 (四)Ping服务器、新闻自动刷新 运行截图和说明: http://www.our-code.net/news/2012/n2737176.html
c#,ajax pro 自动完成.非常不错的例子。
用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...
ajax实现输入框自动完成功能 auto-complete.html,auto-complete.php ajax实现无刷新评论 comment.html,comment.php ajax实现无刷新点赞 praise.php handle-praise.php ajax实现用户注册验证 register.html,register....
任何一个dwr.xml的文件都需要包含DWR DOCTYPE的声明行,格式如下: <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"> 整个配置文件的...
Pace将自动监视您的Ajax请求,事件循环滞后,文档就绪状态以及页面上的元素,以决定进度。 在ajax导航上,它将再次开始! 如果您使用AMD或Browserify,则要求在加载过程中尽早要求progress.js并调用pace.start() 。...