- 浏览: 830682 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (379)
- struts (5)
- hibernate (16)
- spring (16)
- ssh (20)
- MySQL (16)
- 数据库脚本 (2)
- DownLoad (1)
- GAE (5)
- Java (103)
- LoadRunner (2)
- VF (1)
- 学习资料 (24)
- 软件使用 (21)
- 通信类 (4)
- 生活 (3)
- J2ME (1)
- 心理学 (1)
- Linux (26)
- Android (3)
- Oracle (1)
- 面向对象概念&面试准备 (11)
- ExtJs (2)
- Google Map (1)
- Flex (47)
- 算法研究 (1)
- share (20)
- python (1)
- MongoDB (7)
- centos6 (13)
- C++ (8)
- DB2 (3)
- C# (1)
- 代码片段 (24)
- Lucene (2)
- php (1)
- NodeJS (1)
- Express (1)
最新评论
-
shua1991:
已阅,我表示同意。
Eclipse统计代码行数 -
nakedou:
写的不错,挺详细的
在CentOS中使用 yum 安装MongoDB及服务器端配置 -
sjp524617477:
好方法
Eclipse统计代码行数 -
simpletrc:
<script>ale ...
Java写到.txt文件,如何实现换行 -
csdn_zuoqiang:
Apache Ftp Server,目前是1.0.4,非常好的 ...
Apache FtpServer在64位系统下服务不能启动解决方法
做一个小程序要用到Flex文本框自动提示的功能,因为时间不是很紧,所以决定自己动手做这个小组件,花了一个晚上的时间终于完成了。贴出来与大家分享一下。
虽然网上有不少这样的组件,但自己动手做可以锻炼下思维及动手能力,且老吃现成饭,总感觉不是很爽……废话少说,进入正题。
组件运行时截图
设计思路
思路比较简单,组件分成两个部分,1文本框;2提示的下拉列表;
自动提示:
在文本框中输入文字时,在数据源(所有的提示项)查找匹配的选项,若匹配的选项数量>0,在文本框下方显示下拉列表供用户选择;
自动补全:
在匹配的选项中选择最合适的一项(通常为第一项),与用户输入做对比,将用户未完成输入的字符补全到文本框中去,并将补全部分字符设置为选中状态;(为什么要处于选中状态,假如补全文字不是用户所需要的,用户只要再往下输文字就可以了,而不用手动删除补上去的文字)
代码实现(关键点)
1. 界面的制作,文本框+下拉列表,是不是让人马上联想到了下拉列表框;为了简单起见,我便把Flex中的Combox“伪装”成TextInput,代码如下:
1private function init(){
editable=true;
rowCount=5;
selectedIndex=-1;
isTextBoxStringChange=false;
isfocusInDropDown=false;
isAutoComplete=false;
//伪装成TextBox
setStyle("cornerRadius",0);
setStyle("arrowButtonWidth",0);
setStyle("fontWeight","normal");
setStyle("paddingLeft",0);
}
因为ComboBox的长度要比TextInput 宽,也要进行处理一下:
/** *//**
* 与TextBox同样的宽度
*/
override protected function measure():void
{
super.measure();
measuredWidth=UIComponent.DEFAULT_MEASURED_WIDTH;
}
2. 当文本发生变化时,触发查找匹配项的方法,重写父类的textInput_changeHandler(event:Event)事件。
/** *//**
* 文本发生变化时
*/
override protected function textInput_changeHandler(event:Event):void
{
if(textInput.text == ""){
isTextBoxStringChange=false;
}
else{
isTextBoxStringChange=true;
}
super.textInput_changeHandler(event);
invalidateProperties();//调用该方法,随后会触发调用commitProperties()
}
3.进行匹配项的查找,假如控件指定了要进行自动补全则进行自动补全操作。
override protected function commitProperties():void{
if(isTextBoxStringChange){
prompt=text;
filter(); //进行匹配项的查找
if(isAutoComplete&&!isBackSpaceKeyDown){
var autoCompleteString:String="";
if(dataProvider.length>0)
{
autoCompleteString=itemToLabel(dataProvider[0]);
textInput.setSelection(prompt.length,autoCompleteString.length);
prompt=autoCompleteString;
}
else{
textInput.setSelection(textInput.selectionEndIndex,textInput.selectionEndIndex);
}
}
else{
textInput.setSelection(textInput.selectionEndIndex,textInput.selectionEndIndex);
}
}
super.commitProperties();
}
4。检查匹配项的数量若不为0,则显示下拉列表,供用户参考选择。
/** *//**
* 数据源发生变化,数据不为0弹出下拉列表
*/
override protected function collectionChangeHandler(event:Event):void
{
super.collectionChangeHandler(event);
if(dataProvider.length>0)
{
open();
}
}
难点、易出问题点
1,输入文本框的文字显示不出来,因为系统默认将光标一直放在第一个位置,造成用户输入的文字被取消掉,所以在即使不需要补全是,也要进行textInput.setSelection的操作,如下:
textInput.setSelection(textInput.selectionEndIndex,textInput.selectionEndIndex);//这一句不是多余的
2,退格键不起作用,专门为退格键按下作一个FLAG,进行特殊的处理
/** *//**
* 处理退格键按下的情况
*/
override protected function keyDownHandler(event:KeyboardEvent):void
{
if(!event.ctrlKey&&!event.shiftKey)
{
if(event.keyCode == Keyboard.BACKSPACE)
{
close();
isBackSpaceKeyDown=true;
}
else
{
isBackSpaceKeyDown=false;
}
//当按UP键向上选择时,到达最顶时,显示用户原来所需文字
if(event.keyCode == Keyboard.UP && selectedIndex==0)
{
selectedIndex=-1;
}
}
super.keyDownHandler(event);
}
- MyAutoComplete.rar (727.1 KB)
- 下载次数: 218
发表评论
-
Flex Spark皮肤定制
2011-08-03 23:18 1013转自 http://www.cnblogs.com/twave ... -
自定义ItemRenderer常遇到的警告unable to bind to property的解决办法
2011-08-03 22:02 1237<?xml version="1.0&q ... -
Flash Builder 代码格式化工具 Flex Formatter 下载地址
2011-08-03 17:09 1262http://sourceforge.net/projects ... -
提高Flex程序性能的10个秘诀
2011-07-29 09:20 836规则 # 1: 打扫代码 一般来说,保持代码清洁是一 ... -
Flex性能优化常用手法总结
2011-07-29 09:19 838随着Flex越来越多的被人们所熟知,越来越多的互联网也开始了R ... -
关于Flex4,textArea控件的htmlText属性被和谐。。。
2011-06-15 11:18 4825最近做的项目是网页游戏的聊天系统和好友系统,以前喜欢用fl ... -
修改flash builder注释里的@author
2011-06-15 00:18 2090在flash builder里,按Ctrl+Shift+D ... -
AS3中String转换成Boolean
2011-05-27 12:07 3438AS3中String转换成Boolean的规则和Java不一样 ... -
用 File.applicationDerectoryPath.resolv("text.txt")会报SecuriyError错误!
2011-05-26 16:26 1024用 File.applicationDerectoryPath ... -
关于actionscript3.0 中 ResourceBundle 绑定国际化资源文件
2011-04-02 20:17 1322一个简单的示例项目:mpcs LangUtil.a ... -
AIR2.0新特性
2011-03-24 10:29 1236按照类型用默认的程序打开文件 在AIR2.0中,你可以使 ... -
FlashSocket通信安全策略一点心得
2011-03-06 10:29 13671、问题描述 将flash发布为html格式 ... -
理解Loader、Bitmap和BitmapData对象之间的关系
2011-02-15 18:58 4090在Loader对象实例中,被 ... -
AS3 dynamic class
2011-02-13 14:58 2977动态类 “动态”类定义在运行时可通过添加/ 更改属性和方法来 ... -
Array的SortOn排序
2011-01-29 19:53 4061sortOn () 方法 AS3 func ... -
通过Http post方式发送json,然后获取返回的json
2011-01-24 20:36 14182思路:将发送的json转换为xml 示例代码 ... -
在JPanel中,如何将.png格式的图片设置为背景?
2011-01-18 20:14 1720yourJPanel.setBackgroundDecorat ... -
Flash中所支持的Html标签
2011-01-18 19:23 930Flash中所支持的Html标签 <a& ... -
AsWing JList
2011-01-18 14:24 2505JList类似于flex的dataGroup控件,可以自己定义 ... -
AS3.0的Socket通讯发送固定字符串(指定编码)
2011-01-12 17:08 1776flash客户端与服务端传输中文出现乱码的问题C++服务端每次 ...
相关推荐
类似于google网站的自动提示功能,自动提示下拉列表框原始文件地址:http://www.cssrain.cn/article.asp?id=106,我对原始功能进行小小的修改。修改功能如下: 1.可以在一个页面中同时显示多个下拉列表框,带自动提示...
Vue Autosuggest 一个很棒的 Vue.js 自动提示组件
除了实时自动完成功能之外, zsh-autocomplete具有许多其他有用的完成功能。 优化的完成配置 Zsh的完成系统功能强大,但难以配置。 因此, zsh-autocomplete为您zsh-autocomplete此任务,同时提供了可管理的列表,...
autosuggest
Jquery autocomplete 模糊搜索 模仿Google 百度,虽然说还是有些问题,不过已经很好了,使用.NET 与后台进行交互
快速自动完成0.7.1 使用有向文字图(DWG)和Levenshtein编辑距离可实现快速自动完成。 结果通过LFU(最不常用)进行缓存。为什么在此处阅读有关为何构建快速自动完成功能的信息:http: 当我们得出结论,即Elastic...
AUTOSUGGEST js 文件 ,模仿google sugguest编写的ajax 获取下拉列表程序
ajax实现输入提示(类似百度和Google的输入提示) 用法非常简单: 1、在jsp页面引入autosuggest.js文件 2、建一个text文本框 3、写js代码: <script> new actb("tb", loadAllMessage("suggest" , ""), null); 4、这...
前端项目-react-autosuggest,符合WAI-ARIA的react autosuggest组件
jQuery的Ajax自动完成jQuery的Ajax自动完成功能使您可以轻松地为文本输入字段创建自动完成功能/自动建议框。 除jQuery外,它没有其他依赖项。 缩小后,标准的jquery.autocomplete.js文件约为13KB。API 以下内容为...
根据您的用户搜索内容生成自动完成建议 :tangerine: 经过战斗测试 安装 将此行添加到应用程序的Gemfile中: gem 'autosuggest' 入门 准备数据 首先从查询的哈希值及其受欢迎程度开始,例如搜索过的用户数量。 top...
该模块用于实现在任何shopify主题的搜索文本框自动提示。 通过shopify并实现自动提示功能模块使用产品的API给。 如何实现? 简单地包括所有在你HTML文件与autocomplete.js文件下面custom_autocomplete.js。 现在叫...
自动提示 根据输入自动建议结果。 特征: 引入了最佳可访问性实践 灵活的造型 安装 npm install x-autosuggest --save 用法 以下示例将使用自动建议功能来装饰现有的input元素。 当用户输入查询时,自动建议首先...
动态的自动建议/自动完成浏览器扩展,用于Github和Gitlab注释,由diff即时生成。 用它来更快地提交评论和拉取请求评论。先决条件要安装该扩展程序,您所需要的只是一个最新的Chrome浏览器(抱歉,我将很快进入Fire...
React抽象自动完成 为React提供自己的UI自动完成组件。 ---- 安装 npm install --save react-abstract-autocomplete 用法 import AutoComplete , { Completion } from 'react-abstract-autocomplete' ; const users...
自动过滤 procedure TAutoCompleteForm.FormCreate(Sender: TObject); begin FAutoComplete := CreateComObject(CLSID_AutoComplete) as IAutoComplete2; FStrings := TEnumString.Create(SourceMemo.Lines) as ...
NULL 博文链接:https://lgscofield.iteye.com/blog/1679474
jquery-autosuggest, Drew Wilson fork 插件writtern的 jQuery插件Drew Wilson fork 插件writtern的。http://code.drewwilson.com/entry/autosuggest-jquery-plugin工作原理自动 AutoSuggest A