页面引用

  1. <script type="text/javascript" src="${base}/autocom/jquery-1.8.2.min.js"></script>
  2. <script type="text/javascript" src="${base}/autocom/jquery.mockjax.js"></script>
  3. <script type="text/javascript" src="${base}/autocom/jquery.autocomplete.js"></script>

这些是自动填充必须的包。

然后就开始了自动填充的路程~

刚刚下载的里面有最原始的demo 就不多说了。

还有一种简单的

就是页面直接定义数组

然后获取;

简单的demo:

  1. <script type="text/JavaScript">
  2. $(function(){
  3. var vaArray = new Array('aaa','a11','bb');
  4. $('#orgNameCom').autocomplete({
  5. minChars: 1,
  6. maxHeight:300,
  7. lookup: vaArray,
  8. //  serviceUrl: '${base}/getAutoCom.action',
  9. //  params: { orgNameCom:$('#orgNameCom').val()},
  10. onSelect: function (suggestion) {
  11. //   immediately( document.getElementById("orgNameCom")  ,'5','orgNameCom','orgName'); // 我自己程序的方法 不需要用
  12. //  alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
  13. },
  14. //showNoSuggestionNotice: true,
  15. //noSuggestionNotice: 'Sorry, no matching results'
  16. });
  17. })
  18. </script>
  19. <input id="orgNameCom" name="ent.orgName" type="text" class="edit_input" value="" size="30" >

效果图:

lookup: vaArray,  这句话是说使用本地的数组(如上 本地new的一个vaArray)。

serviceUrl : 若是用ajax调用后台收取数据 就需要使用这个参数,后面跟上你的地址;

maxHeight:300,  这个是指你出来的下面的下拉框的最大高度。

//showNoSuggestionNotice: true,
//noSuggestionNotice: 'Sorry, no matching results'

这两句是说 如果没有匹配的,提示信息效果如下:

minChars: 1,  这个是说你输入几个字符后开始匹配,一般默认为1;

params 这个是传入的参数,和ajax传参基本一样,不许多说;

onSelect: 这是会回调函数,就是你选中后,执行的,其中suggestion.value    ,  suggestion.data 就是你后台封装进去的值。

需要特别说明的是 利用ajax获取数据的时候

后台ajax的格式必须是:

  1. {
  2. // Query is not required as of version 1.2.5
  3. "query": "Unit",
  4. "suggestions": [
  5. { "value": "United Arab Emirates", "data": "AE" },
  6. { "value": "United Kingdom",       "data": "UK" },
  7. { "value": "United States",        "data": "US" }
  8. ]
  9. }

这样格式的。

哦,忘记说了 query是这个js封装的一个默认值(跟一下源码就可以知道),他就是你input当前输入的值。

所以需要根据当前输入框的值去后台查询显示,就可以直接用query;

然后看一下我后台的写法

  1. public String getAutoCom() throws IOException{
  2. if(query!=null&&!"".equals(query)){
  3. List<CommonOrganization > comList  = ((BaseTransaction)Platform.getInstance().getBean("baseTransaction")).find("from CommonOrganization where orgName like '%"+query+"%' and ifDel = '1'   and ifAudit='3'");
  4. HttpServletResponse response = (HttpServletResponse)ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
  5. response.setContentType("application/json;charset=UTF-8");
  6. response.setHeader("Pragma", "No-cache");
  7. response.setHeader("Cache-Control", "no-cache");
  8. response.setDateHeader("Expires", 0);
  9. response.setHeader("content-type", "text/html;charset=utf-8");
  10. JSONObject json =new JSONObject();
  11. List<OrgnameCom> listOrg = new ArrayList<OrgnameCom>();
  12. for(  int i = 0 ; i < comList.size();i++ ){
  13. CommonOrganization common = comList.get(i);
  14. OrgnameCom com = new OrgnameCom();
  15. com.setValue(common.getOrgName());
  16. com.setData(common.getId());
  17. listOrg.add(com);
  18. if(i==9){
  19. break;
  20. }
  21. }
  22. JSONArray jsonArray =  JSONArray.fromObject(listOrg);
  23. json.put("query", query);
  24. json.put("suggestions", jsonArray);
  25. response.getWriter().print(json);
  26. }
  27. return null;
  28. }

这是根据我自己项目写的,最重要的是后面的,这个插件显示的值会是你的data所以data是必须有的,query是我取的他们封装好的,因为我只用根据用户输入的去取值。

结果如下:

这些数据都是我从数据库里面获取的。

需要说明的是,你自己输入中文查询的时候 发现传到后台的是乱码。因为他们的源码中用了get的提交方式,

你需要改为post,

jQuery.autocomplete.js 文件中

改为post就好了。

* minChars (Number):

在触发autoComplete前用户至少需要输入的字符数.Default: 1,如果设为0,在输入框内双击或者删除输入框内内容时显示列表

* width (Number):

指定下拉框的宽度. Default: input元素的宽度

* max (Number):

autoComplete下拉显示项目的个数.Default: 10

* delay (Number):

击键后激活autoComplete的延迟时间(单位毫秒).Default: 远程为400 本地10

* autoFill (Boolean):

要不要在用户选择时自动将用户当前鼠标所在的值填入到input框. Default: false

* mustMatch (Booolean):

如果设置为true,autoComplete只会允许匹配的结果出现在输入框,所有当用户输入的是非法字符时将会得不到下拉框.Default: false

* matchContains (Boolean):

决定比较时是否要在字符串内部查看匹配,如ba是否与foo bar中的ba匹配.使用缓存时比较重要.不要和autofill混用.Default: false

* selectFirst (Boolean):

如果设置成true,在用户键入tab或return键时autoComplete下拉列表的第一个值将被自动选择,尽管它没被手工选中(用键盘或鼠标).当然如果用户选中某个项目,那么就用用户选中的值. Default: true

* cacheLength (Number):

缓存的长度.即对从数据库中取到的结果集要缓存多少条记录.设成1为不缓存.Default: 10

* matchSubset (Boolean):

autoComplete可不可以使用对服务器查询的缓存,如果缓存对foo的查询结果,那么如果用户输入foo就不需要再进行检索了,直接使用缓存.通常是打开这个选项以减轻服务器的负担以提高性能.只会在缓存长度大于1时有效.Default: true

* matchCase (Boolean):

比较是否开启大小写敏感开关.使用缓存时比较重要.如果你理解上一个选项,这个也就不难理解,就好比foot要不要到FOO的缓存中去找.Default: false

* multiple (Boolean):

是否允许输入多个值即多次使用autoComplete以输入多个值. Default: false

* multipleSeparator (String):

如果是多选时,用来分开各个选择的字符. Default: “,”

* scroll (Boolean):

当结果集大于默认高度时是否使用卷轴显示 Default: true

* scrollHeight (Number):

自动完成提示的卷轴高度用像素大小表示 Default: 180

* formatItem (Function):

为每个要显示的项目使用高级标签.即对结果中的每一行都会调用这个函数,返回值将用LI元素包含显示在下拉列表中. Autocompleter会提供三个参数(row, i, max): 返回的结果数组, 当前处理的行数(即第几个项目,是从1开始的自然数), 当前结果数组元素的个数即项目的个数. Default: none, 表示不指定自定义的处理函数,这样下拉列表中的每一行只包含一个值.

* formatResult (Function):

和formatItem类似,但可以将将要输入到input文本框内的值进行格式化.同样有三个参数,和formatItem一样.Default: none,表示要么是只有数据,要么是使用formatItem提供的值.

* formatMatch (Function):

对每一行数据使用此函数格式化需要查询的数据格式. 返回值是给内部搜索算法使用的. 参数值row

* extraParams (Object):

为后台(一般是服务端的脚本)提供更多的参数.和通常的作法一样是使用一个键值对对象.如果传过去的值是{ bar:4 },将会被autocompleter解析成my_autocomplete_backend.PHP?q=foo&bar=4 (假设当前用户输入了foo). Default: {}

* result (handler) Returns: jQuery

此事件会在用户选中某一项后触发,参数为:

event: 事件对象. event.type为result.

data: 选中的数据行.

formatted:formatResult函数返回的值

例如:

$(“#singleBirdRemote”).result(function(event, data, formatted) {

//如选择后给其他控件赋值,触发别的事件等等

});

* minChars (Number):

在触发autoComplete前用户至少需要输入的字符数.Default: 1,如果设为0,在输入框内双击或者删除输入框内内容时显示列表

* width (Number):

指定下拉框的宽度. Default: input元素的宽度

* max (Number):

autoComplete下拉显示项目的个数.Default: 10

* delay (Number):

击键后激活autoComplete的延迟时间(单位毫秒).Default: 远程为400 本地10

* autoFill (Boolean):

要不要在用户选择时自动将用户当前鼠标所在的值填入到input框. Default: false

* mustMatch (Booolean):

如果设置为true,autoComplete只会允许匹配的结果出现在输入框,所有当用户输入的是非法字符时将会得不到下拉框.Default: false

* matchContains (Boolean):

决定比较时是否要在字符串内部查看匹配,如ba是否与foo bar中的ba匹配.使用缓存时比较重要.不要和autofill混用.Default: false

* selectFirst (Boolean):

如果设置成true,在用户键入tab或return键时autoComplete下拉列表的第一个值将被自动选择,尽管它没被手工选中(用键盘或鼠标).当然如果用户选中某个项目,那么就用用户选中的值. Default: true

* cacheLength (Number):

缓存的长度.即对从数据库中取到的结果集要缓存多少条记录.设成1为不缓存.Default: 10

* matchSubset (Boolean):

autoComplete可不可以使用对服务器查询的缓存,如果缓存对foo的查询结果,那么如果用户输入foo就不需要再进行检索了,直接使用缓存.通常是打开这个选项以减轻服务器的负担以提高性能.只会在缓存长度大于1时有效.Default: true

* matchCase (Boolean):

比较是否开启大小写敏感开关.使用缓存时比较重要.如果你理解上一个选项,这个也就不难理解,就好比foot要不要到FOO的缓存中去找.Default: false

* multiple (Boolean):

是否允许输入多个值即多次使用autoComplete以输入多个值. Default: false

* multipleSeparator (String):

如果是多选时,用来分开各个选择的字符. Default: “,”

* scroll (Boolean):

当结果集大于默认高度时是否使用卷轴显示 Default: true

* scrollHeight (Number):

自动完成提示的卷轴高度用像素大小表示 Default: 180

* formatItem (Function):

为每个要显示的项目使用高级标签.即对结果中的每一行都会调用这个函数,返回值将用LI元素包含显示在下拉列表中. Autocompleter会提供三个参数(row, i, max): 返回的结果数组, 当前处理的行数(即第几个项目,是从1开始的自然数), 当前结果数组元素的个数即项目的个数. Default: none, 表示不指定自定义的处理函数,这样下拉列表中的每一行只包含一个值.

* formatResult (Function):

和formatItem类似,但可以将将要输入到input文本框内的值进行格式化.同样有三个参数,和formatItem一样.Default: none,表示要么是只有数据,要么是使用formatItem提供的值.

* formatMatch (Function):

对每一行数据使用此函数格式化需要查询的数据格式. 返回值是给内部搜索算法使用的. 参数值row

* extraParams (Object):

为后台(一般是服务端的脚本)提供更多的参数.和通常的作法一样是使用一个键值对对象.如果传过去的值是{ bar:4 },将会被autocompleter解析成my_autocomplete_backend.php?q=foo&bar=4 (假设当前用户输入了foo). Default: {}

* result (handler) Returns: jQuery

此事件会在用户选中某一项后触发,参数为:

event: 事件对象. event.type为result.

data: 选中的数据行.

formatted:formatResult函数返回的值

例如:

$(“#singleBirdRemote”).result(function(event, data, formatted) {

//如选择后给其他控件赋值,触发别的事件等等

});

我的案例:

  html

    

<input id="yufa_type_show"  placeholder="搜索其他语法点" type="text" value="" >

  js

$(function(){
$('#yufa_type_show').autocomplete({
minChars: 1,
maxHeight:260,
width:245,
serviceUrl: '?m=grammar&c=index&a=new_tip_yufa_type',
params: { orgNameCom:$('#yufa_type_show').val()},
onSelect: function (suggestion) {
$("#yufa_type_show").val(suggestion.data);
},
showNoSuggestionNotice: true,
noSuggestionNotice: 'Sorry, no matching results'
});
})

 php

  

public function new_tip_yufa_type(){
$k=trim($_GET["query"]);
$sug='';
$dat='';

$where="ename like '%".$k."%' or cname like '%".$k."%'";

$k12_yufa_type_db=pc_base::load_model('grammar_model');
$rows=$k12_yufa_type_db->select($where);

foreach($rows as $row){
$sug="".$row["ename"]." ".$row["cname"]."";
$dat="".$row["id"]."";

$val.= "{\"value\":\"".$sug."\",\"data\":\"".$dat."\"},";
}
$val = substr($val,0,-1);

echo "{
\"query\": \"".$k."\",
\"suggestions\": [
".$val."
]
}";

}

jquery.autocomplete 使用解析的更多相关文章

  1. [转]jQuery.Autocomplete实现自动完成功能(详解)

    本篇文章除了介绍jquery.autocomplete基本参数外,主要说明jquery.autocomplete的数据源的格式问题.     1.jquery.autocomplete参考地址 htt ...

  2. jQuery.Autocomplete实现自动完成功能(详解)

    1.jquery.autocomplete参考地址 http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/ http://do ...

  3. Jquery autocomplete插件的使用

    简单用法: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...

  4. jquery.autocomplete自动补全功能

    项目实例: 一:js //SupplierAutoComplete.js $().ready(function () { $("#txtSupplier").autocomplet ...

  5. Jquery AutoComplete的使用方法实例

    jquery.autocomplete详解 语法: autocomplete(urlor data, [options] ) 参数: url or data:数组或者url [options]:可选项 ...

  6. jQuery.Autocomplete实现自动完成功能-搜索提示功能

    $(function(){ var availableTags=["ads","abc","acc"]; $("#tags&quo ...

  7. 一场由股票提醒助手插件引发的血案——浅入浅出 jquery autocomplete

    我没有学过前端,所以这篇文章注定要班门弄斧了. 通常,须要用到什么技术什么语言时,我才去学,学了也不一定掌握,就是记不住!所以如今明确了.学习的时候,亦或是攻克难点的时候,一定要记录下来.并不一定非要 ...

  8. jquery autocomplete自动补全

    简单用法: $(function(){ var data = "the People's Republic of China".split(" "); $(&q ...

  9. jquery.autocomplete.js用法及示例,小白进

    8 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 ...

随机推荐

  1. python 字典和列表嵌套用法

    python中字典和列表的使用,在数据处理中应该是最常用的,这两个熟练后基本可以应付大部分场景了.不过网上的基础教程只告诉你列表.字典是什么,如何使用,很少做组合说明. 刚好工作中采集promethe ...

  2. 对ES6中类class以及实例对象、原型对象、原型链之间关系的详细总结

    1. 类 ES6 中新增加了类的概念,可以使用 class 关键字声明一个类,之后用这个类来实例化对象.即类的用途:实例化对象. // 创建一个Person类 class Person { } // ...

  3. Java常见面试题 非常实用【个人经验】

    必收藏的Java面试题 目录 Java 面试题 一.容器部分 二.多线程部分 三.SpringMvc部分 四.Mybatis部分 五.MySQL部分 六.Redis部分 七.RabbitMQ部分 八. ...

  4. Kubernetes将弃用docker?

    1.前言 近日,Kubernetes 官方发布公告,宣布自 v1.20 起放弃对 Docker 的支持,届时用户将收到 Docker 弃用警告,并需要改用其他容器运行时.并在1.23后不再支持dock ...

  5. MySQL基本sql语句总结

    目录 约束 表操作 查看表结构与修改表名 修改字段名与字段数据类型 添加与删除字段 修改字段的排列位置 删除表的外键约束 增删改 插入数据 更新数据 删除数据 查询 单表查询 连接查询 子查询 视图 ...

  6. SQL 清除数据库日志

    exec sp_detach_db 'MCS4WLSQM','true' --运行上一个命令. --改名LOG文件后再关闭上一行代码,然后再运行下一行代码 exec sp_attach_single_ ...

  7. (数据科学学习手札124)pandas 1.3版本主要更新内容一览

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 就在几天前,pandas发布了其1.3版本 ...

  8. SpringCloud:SpringBoot整合SpringCloud项目

    划分模块 这里我划分了四个模块 Common: 存放bean和Dao模块 Consumer: 消费者模块,提供对外暴露接口服务 EurekaServer: Eureka注册中心模块,主要用于启动注册中 ...

  9. XCTF GAME

    首先这题有两种解法,一种是使用ida查看伪代码直接写exp跑出flag,另外一种是调试,因为最近在学调试,刚好用于实战上了. 一.查壳 二.32位文件拖入od动态调试 先找到game的主要函数,插件中 ...

  10. leetcode 字符串转换整数 (模拟)

    思路分析 1.跟着题意模拟,分成几种情况来看待 2.一种全是空格 3.有可能有空格,然后有符号的 4.有可能有空格,无符号数字 5.有可能有空格,非数字开头 6.最后还需要考虑一个越界的问题,所以要除 ...