.mouseOut {
background: #cccccc;
color: #FFFAFA;
}
.mouseOver {
background: #FFFAFA;
color: #000000;
}
var xmlHttp;
var completeDiv;
var inputField;
var nameTable;
var nameTableBody;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function initVars() {
inputField = document.getElementById("names");
nameTable = document.getElementById("name_table");
completeDiv = document.getElementById("popup");
nameTableBody = document.getElementById("name_table_body");
}
function findNames() {
initVars();
if (inputField.value.length > 0) {
createXMLHttpRequest();
var url = encodeURI("ajax.portal?action=autoComplete&name=" + inputField.value);
url = encodeURI(url);
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = callback;
xmlHttp.send(null);
} else {
clearNames();
}
}
function callback() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
clearNames();
var rows = xmlHttp.responseXML.getElementsByTagName("row").length;
var row,cell,txtNode;
for(var i=0;i<rows;i++){
var value = xmlHttp.responseXML.getElementsByTagName("row")[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");
cell.onclick = function() {populateName(this);};
txtNode = document.createTextNode(value);
cell.appendChild(txtNode);
row.appendChild(cell);
nameTableBody.appendChild(row);
}
} else if (xmlHttp.status == 204){
clearNames();
}
}
}
function populateName(cell) {
inputField.value = cell.firstChild.nodeValue;
clearNames();
}
function clearNames() {
var ind = nameTableBody.childNodes.length;
for (var i = ind - 1; i >= 0 ; i--) {
nameTableBody.removeChild(nameTableBody.childNodes[i]);
}
}
<html:form action="/ajax.portal" method="post">
名字:
<input type="text" id="names" onkeyup="findNames();" style="height:20;" width="100px"/>
<div style="border-width:medium;border-color:#000000;margin-left:40px;width:160px;" id="popup">
<table id="name_table" bgcolor="#FFFAFA" border="0" cellspacing="0" cellpadding="0" width="156px";/>
<tbody id="name_table_body">
</tbody>
</table>
</div>
</html:form>
if("autoComplete".equals(form.getAction())){
response.setContentType("text/xml; charset=UTF-8");//xml
response.setHeader("Cache-Control","no-cache");//HTTP1.1
response.setHeader("Pragma","no-cache");//HTTP1.0
response.setDateHeader("Expires",0);
PrintWriter out=null;
String name = request.getParameter("name");
try {
out = response.getWriter();
// name = new String(name.getBytes("ISO8859-1"), "UTF-8");
name=java.net.URLDecoder.decode(name,"UTF-8");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("name="+name);
List names=new ArrayList();
names.add("abc");
names.add("abd");
names.add("ace");
names.add("acd");
names.add("bcd");
names.add("bce");
names.add("bcf");
names.add("cdf");
names.add("cdg");
names.add("dth");
names.add("dfc");
names.add("ddt");
names.add("ddd");
names.add("xdd");
names.add("ydd");
names.add("zdd");
List matches = Util.findMatches(names,name);
System.out.println("matches.size="+matches.size());
if (matches.size() > 0) {
StringBuffer sb = new StringBuffer();
sb.append("<root>");
Iterator iter = matches.iterator();
while (iter.hasNext()) {
sb.append("<row>" + (String)iter.next() + "</row>");
}
sb.append("</root>");
out.write(sb.toString());
out.close();
// System.out.println("sb.toString()="+sb.toString());
} else {
response.setStatus(HttpServletResponse.SC_NO_CONTENT);
}
return mapping.findForward("ajax");
}
分享到:
相关推荐
这个开源代码库提供了一个定制的`autoComplete`组件,它不仅包含源码,还附带了示例,可以帮助开发者更好地理解和使用这个功能。 该开源项目名为"flex-autocomplete-master",意味着它是Flex的`autoComplete`组件的...
3. **编写jQuery代码**:在页面加载完成后,我们需要监听`searchInput`元素的`keyup`事件。当用户在输入框中键入字符时,触发异步请求到服务器,获取匹配的数据。这里可以使用jQuery的`$.ajax`方法: ```javascript...
首先,我们要理解jQuery-autoComplete的基本工作流程。当用户在输入框中输入字符时,该插件会监听输入事件,然后根据预设的配置和数据源进行匹配,将匹配的结果动态展示为下拉列表供用户选择。在jQuery-autoComplete...
通过研究这些示例,开发者可以学习到 Autocomplete 的基本用法,以及如何结合实际项目进行定制。同时,源代码可以帮助开发者深入理解其内部工作原理,以便在必要时进行二次开发或优化。总之,jQuery Autocomplete 是...
- **jquery.autocomplete.js**:这是核心的 JavaScript 文件,包含了 Autocomplete 插件的所有功能代码。通过调用这个插件,我们可以为指定的输入框添加自动补全功能,并设置各种参数,如数据源、匹配算法、回调...
然后,可以使用以下代码初始化 Autocomplete: ```html <input type="text" id="autocomplete-input"> ``` ```javascript $(document).ready(function() { $('#autocomplete-input').autocomplete({ source: ['...
在`autocomplete-demo`中,你可以看到一个实际的运行示例,通过调整代码和数据源,可以进一步定制化以满足项目需求。 总之,jQuery Autocomplete为Web开发者提供了一种高效、灵活的解决方案,用于构建自动完成功能...
示例代码 在提供的压缩包`test`中,应该包含了一个简单的演示页面,可以直接运行查看效果。这个例子展示了如何配置和使用jQuery Autocomplete.js,以及如何与服务器进行交互,实现动态数据加载和选中项的处理。 #...
基本的 HTML 结构应包含一个输入框元素,它将用于触发 Autocomplete 功能。 ```html <!DOCTYPE html> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> ...
1. **jQuery**:Bootstrap Autocomplete是建立在jQuery库之上的,因此需要对jQuery的基本操作如DOM操作、事件处理、动画效果等有深入了解。jQuery使得JavaScript代码更加简洁和易用,能够方便地与HTML元素交互。 2....
在上面的代码中,`availableTags`是静态数据源,你可以根据实际需求替换为数组或动态获取的数据。`source`参数指定了数据源,`$("#searchBox")`则是选择需要应用Autocomplete功能的元素。 jQuery Autocomplete 还...
**jQuery Autocomplete ...通过以上介绍,我们了解了 `jQuery Autocomplete` 插件的基本原理、使用方法以及优化技巧。在实际项目中,结合自身需求,灵活运用这些知识点,可以创建出高效且用户体验优秀的自动补全功能。
初始化jQuery Autocomplete插件通常在文档加载完成后执行,可以使用`$(document).ready()`函数包裹代码。基本语法如下: ```javascript $("#inputElement").autocomplete({ source: function(request, response) {...
标题提到的"带分页的jquery.autocomplete"则是在这个基本功能的基础上增加了分页功能,使得在处理大量数据时能更加高效和友好地展示搜索结果。 jQuery UI 自带的 Autocomplete 插件允许开发者通过 JSON 数据源或者...
标题中的"autocomplete.rar"指的是一个压缩包文件,其主要功能可能是包含了有关自动补全或自动完成的相关代码、配置文件或文档。在IT领域,自动补全(Autocomplete)是一项非常实用的功能,常见于各种编程环境、操作...
5. **基本使用方法**: 要使用jQuery Autocomplete,首先需要引入jQuery和jQuery UI库。然后,选择需要添加此功能的输入框元素,并调用`.autocomplete()`方法,传入配置对象,如数据源(`source`)、触发补全的最小...
这段代码会为 ID 为 "search-box" 的输入框启用 AutoComplete 功能,并从给定的数组中提供补全建议。 ### 3. 后台数据源 如果需要从服务器获取数据,可以使用 `source` 选项接受一个函数,该函数接受两个参数:...
本篇文章将深入探讨jQuery Autocomplete的基本原理、使用方法以及一些常见的应用场景。 ### 1. jQuery Autocomplete 基本原理 jQuery Autocomplete是jQuery UI库的一个组件,它通过监听用户在输入框中的输入事件,...
实现 Autocomplete 的基本步骤 - **监听输入事件**:通常使用 JavaScript 的 `input` 或 `keyup` 事件来监听用户的输入行为。 - **获取输入值**:通过 `document.getElementById('inputId').value` 获取当前输入框...
-- jQuery Autocomplete相关代码将放在这里 --> ``` 2. **设置Autocomplete**: 创建一个输入框,并为其设置Autocomplete。我们需要指定数据来源,可以是JSON格式的数据流,也可以是从服务器获取的动态数据。 `...