### 自动填充input标签:JavaScript实现 在现代Web开发中,自动填充功能是提升用户体验的重要手段之一。本文将深入探讨如何使用JavaScript(简称JS)来实现一个简单的自动填充功能,并结合给定的代码示例进行详细解析。 #### 核心知识点概览 1. **jQuery与DWR库的应用** 2. **自动填充的基本原理** 3. **数据处理与展示** #### jQuery与DWR库的应用 - **jQuery简介**:jQuery是一个快速、简洁的JavaScript库,简化了HTML文档遍历、事件处理、动画以及Ajax交互等操作。 - **DWR(Direct Web Remoting)简介**:DWR是一种简化Ajax编程的技术,使得开发者可以直接调用服务器端的方法,就像调用客户端方法一样简单。 在给定的代码示例中,使用了jQuery的`autocomplete`插件来实现自动填充功能,并通过DWR库来处理与服务器端的数据通信。 #### 自动填充的基本原理 自动填充功能主要依赖于前端框架或库提供的组件,如jQuery UI中的`autocomplete`插件。其工作流程如下: 1. **用户输入**:当用户在输入框中键入文本时,触发键盘事件(如`keyup`事件)。 2. **请求数据**:根据用户的输入值向服务器发送请求,获取匹配的建议列表。 3. **显示建议**:接收到服务器返回的数据后,在输入框下方展示一个下拉列表供用户选择。 4. **选中项处理**:当用户从建议列表中选择了某个项时,将其设置为输入框的值,并执行相应的回调函数。 #### 数据处理与展示 - **数据结构设计**:为了更好地组织和展示数据,通常会使用对象数组来存储每条建议信息。每个对象包含至少两个属性:`name`表示建议的名称,`to`表示额外的信息或ID,用于后续处理。 - **格式化展示**:为了使建议列表更加易读,可以通过`formatItem`、`formatMatch`和`formatResult`等方法来自定义每条建议的显示样式。 #### 代码解析 ```javascript var usernameArray = []; var tval = ""; $(document).ready(function() { // 初始化自动完成插件 $("#suggest1").autocomplete(cities); // 监听用户名输入框的键盘事件 $("#username").keyup(function() { tval = $(this).val(); // 使用DWR服务获取匹配项 dwrServices.getChildComMap(tval, function(data) { usernameArray = []; for (x in data) { var obk = new Object(); obk.name = data[x]; obk.to = x; // 这里假设数据索引即为ID usernameArray.push(obk); } // 设置自动完成选项 $("#username").autocomplete(usernameArray, { minChars: 0, // 最小字符数 width: 310, // 下拉列表宽度 matchContains: true, // 是否支持部分匹配 autoFill: false, // 是否自动填充 formatItem: function(row, i, max) { // 自定义每条建议的样式 return i + "/" + max + ": \"" + row.name + "\"[" + row.to + "]"; }, formatMatch: function(row, i, max) { // 自定义选中项的样式 return row.name + "" + row.to + "--" + tval; }, formatResult: function(row) { // 自定义最终结果的样式 return row.name; } }).result(function(event, row, formatted) { // 当用户从建议列表中选择了某个项时触发 $("#username").change(function() { alert(row.to); }); }); }); }); }); ``` ### 总结 通过以上分析,我们可以看到使用jQuery和DWR库可以轻松实现自动填充功能。这种实现方式不仅提高了用户的输入效率,还增强了用户体验。对于开发者来说,了解这些技术和实现细节对于构建高性能的Web应用至关重要。






























var tval="";
$(document).ready(function(){
//文本框不缓存
// $.fn.mtea.setInputTxtCache(["#username"],false);
$("#suggest1").autocomplete(cities);
$("#username").keyup(function(){
dwr.engine.setAsync(false);
tval=$(this).val();
dwrServices.getChildComMap($(this).val(), function(data){
//遍历,组装结果
usernameArray=[];
for(x in data){
var obk = new Object();
obk.name = data[x];
obk.to = x;
usernameArray.push(obk);
}
});
// $("#username").autocomplete(cities);
$("#username").autocomplete(usernameArray, {
minChars: 0,
width: 310,
matchContains: true,
autoFill: false,
formatItem: function(row, i, max) {
return i + "/" + max + ": \"" + row.name + "\" [" + row.to + "]";

- redwoodjiang2014-05-01错误,实在是错误。 浪费自己的时间。

- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源


