`
Augustan
  • 浏览: 51620 次
  • 性别: Icon_minigender_1
  • 来自: 江蘇
社区版块
存档分类
最新评论

一个ajax自动完成的例子

    博客分类:
  • java
阅读更多

       在项目当中,经常会有输入省市名称的要求,如果采用下拉框的形式,用户选择会很不方便,因为选项太多。这种情况下可以采用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
分享到:
评论
11 楼 tear11 2009-01-09  
整合到了自己的框架里面,挺好的,
if ((inputField.value.length<=0)||(event.keyCode==13)){  
        outputField.value="";  
        return false;  
    }  
这里是不是要clearDiv();要不然把输入框(cityBeginText)的内容全部删除后,completeDiv还在显示;
10 楼 zhudp.cn 2008-12-24  
不错!
看看我的怎么样?
http://zhudp-cn.iteye.com/admin/blogs/254445
9 楼 z95001188 2008-12-24  
不错.现在大多是用Jquery插件实现.
8 楼 wqwqvic 2008-07-28  
唉 那美女是作者的老婆!!!!!!
7 楼 wqwqvic 2008-07-25  
美女姐姐什么时候上线啊,我都等你好几天了!我有问题需要你帮助啊是关于JBPM的,上线给我发消息啊
6 楼 lovelium 2008-07-25  
不错,美女要支持
5 楼 kimmking 2008-07-25  
赞一个


-------
PS:
JSF框架ICEFACES,richfaces之类的

或是YUI等JS库 都有类似的例子
4 楼 onetown 2008-07-25  
貌似lz做的和我现在做的东西比较像, 给机票代理人或者航空公司做的吧? 能否留个联系方式交流交流.
3 楼 guowei821120 2008-07-25  
美女 支持
2 楼 zhangxi123 2008-06-14  
下了看看!谢谢
1 楼 yourgame 2008-06-14  
好东西,值得借鉴

相关推荐

    Ajax文本框自动完成示例

    Ajax文本框自动完成示例,采用ajax技术做的小例子,完成文本的自动输入功能。

    ajax基础,初学者必看,八个例子,上手快

    程序用Jsp作为客户端,发送异步请求到Servlet,Servlet模拟数据库操作,返回结果,客户端...例子包含自动提示,自动更新,google自动完成,进度条等,每个例子都有一个readme.txt文件,里面介绍例子的功能和重要代码.

    Ajax仿Google Suggest自动完成

    这是给学生演示Ajax的一个例子。 后台是Servlet,数据库是MSSQLServer2005,数据量是从AdventureWorks中拷贝过来的。 虽然是演示,但是并不是HelloWorld那种不实用的例子,而是包含两个经典的应用:用户名检测和...

    Asp.net Ajax Control Toolkit实用模块例子

    Asp.net Ajax ControlToolkit 自动完成功能和自动拒绝垃圾发布程序和拖曳排序和评分功能的例子

    boc-autocomplete:一个没有依赖的微型 AJAX 自动完成控件

    一个最小的 AJAX 自动完成,没有依赖项。 仅缩小了 2kb。 测试: Chrome合金 苹果浏览器 Safari iOS 适用于: 鼠 键盘(用于选择的箭头键) 例子 &lt;input type="search" id="autocomplete" placeholder=...

    ajax例子

    ajax示例,自动完成功能和textbox控件结合起来,成为一个自定义控件

    Ajax基础教程(扫描版)

    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 ...

    JS实现的一个简单的Autocomplete自动完成例子

    分享一篇无意间发现的自动完成源码。这里测试的时候使用的是数组,实际使用的时候,我们换成Ajax从服务器端获取的方式就OK了。提示:可以直接保存到一个html文件中查看效果。 代码如下:&lt;!doctype html&gt;&lt;...

    嵌入式web服务器boa_C语言/Python + HTML + javascript + ajax 代码实例例子

    boa可 执行文件的路径: /usr/local/bin/boa, 可以设置为: 系统启动的时候, 这个进程自动启动 boa.conf 文件的重要参数 保存html文件的目录 DocumentRoot /www 可以将这个目录, 设置为samb共享文件夹的目录, 方便...

    jQuery Autocomplete例子,自动补全功能

    jQuery UI Autocomplete是jQuery UI的自动完成组件,通过ajax请求的JSON数组、JSONP来获取数据,实现自动补全功能

    【卷一/共两卷】AJAX实战pdf高清版90M

    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 小结 ...

    AJAX基础概念、核心技术与典型案例(内涵动态实例)

    程序描述:本章模仿Google ig,使用Ajax技术实现一个个性化主页系统。通过拖拽方式设置主页,当完成拖拽窗口时,自动保存布局,使用户可以随时根据喜好来设置布局。 /login.jsp 登录页面 /homepage.jsp ...

    autocomplete:来自 ajax (jQuery) 的自动完成结果

    GET 或 POST 参数搜索显示所有布尔值显示焦点上的所有值错误的打回来指向函数的指针第一个参数是结果第二个参数是指向自动完成包装器的指针空值清除按下清除按钮时的函数调用空值班级名称突出显示元素时的类名(不带...

    AJAX根据城市名,自动完成相应的城市信息

    下面是做的一个小例子,由两个页面组成。 city.html页代码如下:  得到城市相应的信息 输入城市的拼音: 级别: 负责人: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] zipcode.jsp代码如下

    Asp.net C# Ajax基础 代码

    包括四个小例子: (七)自动完成示例 (六)工具提示 (五)滚动条 (四)Ping服务器、新闻自动刷新 运行截图和说明: http://www.our-code.net/news/2012/n2737176.html

    c# ajaxpro

    c#,ajax pro 自动完成.非常不错的例子。

    JAVA上百实例源码以及开源项目

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    phpdemo:php学习笔记

    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.xml的文件都需要包含DWR DOCTYPE的声明行,格式如下: &lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"&gt; 整个配置文件的...

    步伐:自动将进度条添加到您的网站

    Pace将自动监视您的Ajax请求,事件循环滞后,文档就绪状态以及页面上的元素,以决定进度。 在ajax导航上,它将再次开始! 如果您使用AMD或Browserify,则要求在加载过程中尽早要求progress.js并调用pace.start() 。...

Global site tag (gtag.js) - Google Analytics