At.js实现的输入框参数提示
来源:互联网 发布:驾校预约软件 编辑:程序博客网 时间:2024/05/18 13:45
At.js(https://github.com/ichord/At.js)是GitHub上的一个开源项目,MIT授权,主要用来实现类似于微博人人输入@后显示候选好友列表的功能,具体效果可参见官方Demo: http://ichord.github.io/At.js/ 。本文基于版本v0.4.0。
官网上有example.html,但略显复杂,其实At.js的基本使用相当简单,除了作为基础的jquery.js,只需要一个js文件和一个css文件,共三个资源:
- jquery,js
- jquery.atwho.js
- jquery.atwho.css
然后定义一个输入框,再用js为该输入框设定关键字和候选数据即可。最简单的例子如下:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>at.js demo</title> <link rel="stylesheet" type="text/css" href="styles/jquery.atwho.css"> <script type="text/javascript" src="scripts/jquery.js"></script> <script type="text/javascript" src="scripts/jquery.atwho.js"></script> <script> $(function(){ $('.inputor').atwho({ at: "@", data: ["aaa","bbb","ccc"] }); }); </script> </head> <body> <input id="inputor" class="inputor" name="at" style="width:1000px;height:30px;"/> </body></html>
我的项目中需要实现输入框的参数提示功能,即对类似(type,param1,param2)的输入,由type的值决定param1和param2的候选数据,并区分两个逗号,为”,param1"和”,param2”显示分别的候选数据,简化代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>at.js demo</title> <link rel="stylesheet" type="text/css" href="styles/jquery.atwho.css"> <script type="text/javascript" src="scripts/jquery.js"></script> <script type="text/javascript" src="scripts/jquery.atwho.js"></script> <script> $(function(){ var types = ["NUM","CHAR"]; var param1; var param2; var commaCount; $('.inputor').atwho({ at: "(", data: types, callbacks: { /* What to do before insert item's value into inputor. @param value [String] content to insert @param $li [jQuery Object] the chosen item */ before_insert: function(value, $li) { switch(value.substr(1,value.length-1)){ case "NUM": param1 = [{name: '1'},{name: '2'}]; param2 = [{name: '3'},{name: '4'}]; break; case "CHAR": param1 = [{name: 'a'},{name: 'b'}]; param2 = [{name: 'c'},{name: 'd'}]; break; } return value; } } }); $('.inputor').atwho({ at: ",", callbacks: { /*It would be called to match the `flag`. It will match at start of line or after whitespace @param flag [String] current `flag` ("@", etc)@param subtext [String] Text from start to current caret position. @return [String | null] Matched result. */ matcher: function(flag, subtext, should_start_with_space) { var match, regexp; flag = flag.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); if (should_start_with_space) { flag = '(?:^|\\s)' + flag; } regexp = new RegExp(flag + '([A-Za-z0-9_\+\-]*)$|' + flag + '([^\\x00-\\xff]*)$', 'gi'); match = regexp.exec(subtext); if (match) { var i; commaCount = 0; for(i=0;i<subtext.length;i++){ if(subtext.charAt(i) == ","){ commaCount++; } } return match[2] || match[1]; } else { return null; } }, /*Filter data by matched string.@param query [String] Matched string.@param data [Array] data list @param search_key [String] key char for seaching. @return [Array] result data.*/ filter: function(query, data, search_key) { if(commaCount == 1){ return param1; } else if(commaCount == 2){ return param2; } } } }); }); </script> </head> <body> <input id="inputor" class="inputor" name="at" style="width:1000px;height:30px;" autocomplete = "off"/> </body></html>
此例实现了对(NUM,[1,2],[3,4])和(CHAR,[a,b],[c,d])的输入提示,关键在于三个回调函数:
- 在关键字”(”的before_insert函数中根据当前insert的值对param1和param2填充不同的数据。
- 在关键字“,”的matcher函数中计算当前输入框中内容(subtext)中逗号的个数(commaCount)。
- 在关键字”,”的filter函数中根据逗号的个数(commaCount)判断当前是第几个逗号,并相应返回param1或param2。
另外,可在input标签内添加autocomplete = “off”来关闭浏览器的自动提示功能,避免冲突。
新址:http://www.limisky.com/101.html
- At.js实现的输入框参数提示
- input输入框下拉提示、js的keyup的实现、
- js实现输入框自动提示功能
- 实现输入内容提示的功能(仿google_百度输入框提示)jquery.ui.autocomplete.js插件
- 实现输入内容提示的功能(仿google_百度输入框提示)jquery.ui.autocomplete.js插件 .
- 实现输入内容提示的功能(仿google_百度输入框提示)jquery.ui.autocomplete.js插件
- 输入提示的实现
- 简单的js+css的输入框自动提示功能实现
- 搜索框根据输入自动提示--js实现
- 利用js实现输入框动态提示信息
- JS实现输入框提示文字点击时消失效果
- html5配合css3实现带提示文字的输入框(摆脱js)
- JS实现输入框类似百度搜索的智能提示效果
- 网页输入框的提示实现 placeholder
- 输入框自动提示的实现
- 输入框自动提示的实现
- 【JS】输入框提示功能
- js输入框提示输入字数校验
- 抽象工厂
- UINavigationBar 背景设置
- java Enum的使用方法
- POJ:1659 Frogs' Neighborhood (Havel-Hakimi定理)
- C# 操作word常用方法
- At.js实现的输入框参数提示
- FreeBSD+openvpn之ports安装过程
- Java 基础加强 - JavaBean与内省操作
- Google 的十大信条
- c++读取utf8等不同编码文件
- wdlinux的安装目录
- 人生轨迹
- JavaScript加强之自定义callback
- Myeclipse中如何更改jsp默认的打开方式