`
Augustan
  • 浏览: 52109 次
  • 性别: 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例子

    通过以上步骤,我们完成了一个基本的DWR Ajax应用,实现了页面局部更新的效果。这个简单的例子展示了DWR如何简化了JavaScript与Java之间的通信,使得在不刷新页面的情况下,用户可以实时获取服务器端的动态信息。 ...

    ajax自动搜索例子

    "Ajax自动搜索"是Ajax技术的一个常见应用,常用于搜索引擎、网站内容过滤或者推荐系统,让用户在输入查询关键词时实时得到匹配结果。 在实现Ajax自动搜索的过程中,主要涉及以下几个关键知识点: 1. **事件监听**...

    jquery,ajax的几个小例子

    这可以通过监听第一个下拉框的change事件,然后发送Ajax请求获取新的选项数据,最后更新第二个下拉框。自动补全功能常用于输入框,当用户输入时,后台会返回匹配的建议列表。这通常结合keyup事件和$.ajax()实现,...

    ajax的简单例子,自动读取会更新的文件

    首先,我们来看核心组件`ajaxtest.jsp`,这是一个基于Java Servlet的后端文件,它负责处理来自前端的Ajax请求,并返回更新的数据。在这个例子中,`response.txt`是存储被读取内容的文本文件。每当这个文件的内容发生...

    Ajax+JSON 搜索框自动完成提示功能

    标题 "Ajax+JSON 搜索框自动完成提示功能" 涉及的是网页开发中的一个常见技术,用于提高用户输入体验。Ajax(异步JavaScript和XML)是Web开发中的一种技术,它允许页面在不重新加载整个页面的情况下与服务器交换数据...

    Ajax小例子源码

    创建XMLHttpRequest对象后,我们需要打开一个连接,设置请求类型(GET或POST),URL以及是否异步执行。然后发送请求,并监听状态变化,当状态变为4(表示请求已完成)时,读取服务器的响应。 2. **HTTP请求**:Ajax...

    仿google搜索ajax自动完成功能

    在网页开发中,实现“仿Google搜索”的AJAX自动完成功能是一项常见的需求。这个功能使得用户在输入搜索关键词时,无需点击搜索按钮,就能即时看到包含该关键词的相关搜索建议,极大地提升了用户体验。这里我们将深入...

    反向ajax聊天简单例子

    "反向Ajax聊天简单例子"中包含的主要文件可能是一个名为`dwrtest`的文件夹,这通常代表Direct Web Remoting (DWR)的一个测试案例。DWR是一款开源的Java库,它允许JavaScript在浏览器端直接调用Java方法,从而实现...

    AJAX实例:根据邮编自动完成地址信息

    在这个例子中,当用户输入邮编达到3位时,我们向服务器发送一个GET请求,URL中包含当前邮编。服务器根据邮编返回匹配的地址列表,格式为JSON。`onreadystatechange`回调函数处理服务器的响应,将地址结果显示在页面...

    jquery实现的AJAX的一些例子

    在IT行业中,jQuery是一个广泛使用的JavaScript库,它极大地简化了DOM操作、事件处理以及Ajax交互。本主题将深入探讨如何利用jQuery实现AJAX技术,通过给出的实际例子来增强理解。 AJAX(Asynchronous JavaScript ...

    ASP.net+AJAX智能匹配检索(自动完成)

    在本文中,我们将深入探讨如何利用这两种技术实现一个动态的自动完成搜索功能。 首先,我们需要创建一个搜索页面,如示例代码所示。这是一个基于ASP.NET的网页,其中包含一个JavaScript函数`startRequest()`,该...

    jsp+Ajax表单自动完成,和Google的搜索的差不多

    综上所述,"jsp+Ajax表单自动完成"是一个融合了前后端技术的交互式Web开发实践,它利用JSP处理服务器端逻辑,Ajax实现无刷新数据通信,以及JavaScript和相关库增强用户体验。通过这些技术,我们可以构建出类似Google...

    Ajax小例子

    以下是一个简单的Ajax调用示例,展示如何使用XMLHttpRequest对象: ```javascript var xhr = new XMLHttpRequest(); // 创建XMLHttpRequest对象 xhr.open('GET', 'example.php', true); // 打开连接,'GET'是请求...

    AJAX文档和例子

    1. **动态加载内容**:如无限滚动,用户滚动到底部时,AJAX自动请求更多数据并插入到页面中。 2. **表单验证**:在提交前,通过AJAX验证用户输入的有效性,避免不必要的页面跳转。 3. **实时更新**:如聊天室,使用...

    ajax实现自动完成功能带源码

    在网页开发中,自动完成(AutoComplete)功能是一种常见的用户体验优化技术,它允许用户在输入时获取...提供的源码应该包含了这些实现细节,你可以通过分析和调试源码来进一步理解AJAX自动完成的工作原理和实现方式。

    ajax请求例子

    这意味着服务器响应应该是一个有效的JSON字符串,jQuery将自动将其解析为JavaScript对象。 5. **cache**:(可选) 默认为`true`,用于控制浏览器是否缓存请求结果。 - `cache:false`表示禁用缓存,每次请求都会向...

    ajax自动补全搜索提示

    2. **SuggestFramework.js**:这是一个JavaScript文件,实现了Ajax自动补全的核心逻辑。文件内部包含了一个函数或类,用于监听用户的输入事件,触发Ajax请求,并处理返回的建议数据,将其展示在页面上。理解这个脚本...

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

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

    AJAX实现的自动保存实例

    下面我们将深入理解AJAX的核心原理,并结合实例讲解如何创建一个自动保存功能。 一、AJAX基础 1. XMLHttpRequest对象:AJAX的核心是XMLHttpRequest对象,它允许JavaScript在后台与服务器进行通信,而无需重新加载...

    AJAX+ACCESS+JS互相配合实现的模仿谷歌TEXT自动完成功能

    以上就是AJAX、ACCESS和JavaScript如何结合实现文本自动完成功能的基本流程和关键技术点。通过这种方式,用户可以迅速找到所需信息,而无需完整输入整个关键词,提升了用户体验。在实际项目中,可能还需要考虑性能...

Global site tag (gtag.js) - Google Analytics