`
longgangbai
  • 浏览: 7339344 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

flex 中类似Google的提示下拉菜单实现

阅读更多

 

  项目中使用类似Gooogle输入提示菜单的实现如下

1.首先针对的ComboxBox的封装类

2.在页面导入组件使用:

备注:此处的

dataProvider为数据源提供器

labelFunction 为显示字符串的的格式函数

filterFunction 表示为过滤函数

rowCount 表示每次显示的个数

 

在页面中使用如下:

views:表示页面中导入的包的信息

 

<views:FilterComboBox  id="CITY_CODE" dataProvider="{cityCol}" labelFunction="labelFunction"   filterFunction="filterFunction"  width="120" rowCount="10"/>

  /**
    * 显示城市名
    */
   private function labelFunction(item:Object):String
   {
     return item.NAMEZH;
   }

/**
    * 过滤函数的应用
    */
   private  function filterFunction(text:String, item:Object):Boolean
   {
    if (StringUtil.trim(text) == "")
    {
     return true;
    }
     //均转换为大写
     text = text.toUpperCase();
    //简拼
    var kpinyin:String = item.KPINYIN;
    //全拼
    var npingyin:String = item.NPINGYIN;
    //英文名称
    var enName:String = item.NAMEEN;
    if((kpinyin != null && kpinyin.toUpperCase().indexOf(text) == 0)
    || (npingyin != null && npingyin.toUpperCase().indexOf(text) == 0)
    || (enName != null && enName.toUpperCase().indexOf(text) == 0))
    {
      return true;
    }
    return false;
   }

   

 

 

FilterComboBox 的设置如下:

 

package component
{
import flash.events.Event;
import flash.events.MouseEvent;

import mx.controls.ComboBox;
import mx.events.CollectionEvent;

/**
 * 可过滤拉列表框
 */
public class FilterComboBox extends ComboBox
{
 /**
  * 保存文本框文本
  */
 private var tempstr:String = "";
 
 /**
  * 过滤函数,返回true显示条目,返回false隐藏条目
  * @param text 文本
  * @param 条目对象
  * function filterFunction(text:String, item:Object):Boolean
  */
 public var filterFunction:Function;
 
 /**
  * 自动单条选中
  */
 public var autoSingleSelect:Boolean = true;
 
 /**
  * 构造
  */
 public function FilterComboBox()
 {
  super();
  //可编辑
  editable = true;
  //鼠标点击事件
  addEventListener(MouseEvent.CLICK, mouseClick_Handler);
 }
 
 /**
  * 覆盖更新显示函数
  */
 override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
 {
  //设置下拉按钮宽度为0,不显示
  setStyle("arrowButtonWidth", 0);
  
  super.updateDisplayList(unscaledWidth, unscaledHeight);
 }
 
 /**
  * 鼠标点击事件处理
  */
 private function mouseClick_Handler(event:MouseEvent):void
 {
  //展开列表
  open();
 }
 
 /**
  * 集合条目过滤函数
  */
 private function filterItem(item:Object):Boolean
 {
  if (filterFunction == null)
   return true;
   
  return filterFunction(text, item);
 }
 
 /**
  * 集合刷新处理函数
  */
 private function collChange_handler(event:CollectionEvent):void
 {
  //refresh类型
  if (event.kind == "refresh")
  {
   //只剩一个条目,则默认选中
   if (autoSingleSelect && collection.length == 1)
   {
    selectedIndex = 0;
    return;
   }
   //不选中条目
   dropdown.selectedIndex = -1;
   //滚动到最上部
   dropdown.verticalScrollPosition = 0;
   //必须主动设置文本,否则无法正常显示已经输入的文本
   text = tempstr;
   //显示下拉列表,会导致文本框文本被选中
   open();
   //不选中文本
   textInput.setSelection(tempstr.length, tempstr.length);
  }
 }
 
 /**
  * 过滤
  */
 private function filterCollection():void
 {
  if (collection == null)
   return;
  if (filterFunction != null)
  {
   //设置过滤函数
   collection.filterFunction = filterItem;
   //事件监听
   collection.addEventListener(CollectionEvent.COLLECTION_CHANGE, collChange_handler);
   //必须刷新视图
   tempstr = text;
   collection.refresh();
  }
  else
  {
   //显示下拉列表
   open();
  }
 }
 
 /**
  * 覆盖键盘up事件处理函数
  */
// override protected function keyUpHandler(event:KeyboardEvent):void
// {
//  super.keyUpHandler(event);
//  
//  filterCollection();
// }
 
 /**
  * 覆盖文本变换事件处理函数

  * 备注此处的覆盖方法必须使用override 修饰
  */
 override protected function textInput_changeHandler(event:Event):void{
  super.textInput_changeHandler(event);
  
  //过滤
  filterCollection();
 }
}
}

 

 

备注此代码,还有部分Bug需要修改:如在回退时可能出现的异常信息必须处理等。

 

 

分享到:
评论

相关推荐

    Jquery自动提示插件(类似Google与Baidu)

    其中,jQuery的自动提示插件为用户提供了一种类似于Google和百度搜索的智能提示功能,能够实时显示与用户输入匹配的建议内容,从而提高输入效率和准确性。 **jQuery Autocomplete 插件** jQuery Autocomplete是...

    Flex构建类Google联想功能

    Flex构建类Google下拉框的联想功能关键组件的构建,附件中有源码,有.swf效果动画,及截图 本人环境是使用Exclipse加Flex Builder 插件以Flex 3+Java+LSDS写的,附件中为了演示类Google功能,简化了。

    导航条_水平2

    3. 扩展性:可以容纳多个链接或下拉菜单,方便展示多个层级的导航选项。 三、水平导航条的设计要素 1. 界面清晰:导航条的按钮应清晰标注,避免使用模糊或含糊的标签。 2. 一致性:在整个网站中保持导航条的位置和...

    网页设计期末大作业+html+css 【酒店预订首页网页设计仿飞猪】

    此外,`&lt;form&gt;`标签可能用于构建预订表单,包括输入框(`&lt;input&gt;`)、下拉菜单(`&lt;select&gt;`)、按钮(`&lt;button&gt;`)等元素,让用户可以输入个人信息和预订需求。 CSS(Cascading Style Sheets)则用于控制网页的布局...

    html css 导航功能网页

    - `position` 和 `z-index`:用于定位元素和控制层叠顺序,特别是在实现下拉菜单时。 3. **响应式设计**: - `media queries`:通过检测设备的特性(如宽度)来应用不同的CSS样式,确保网页在不同设备上都能良好...

    用HTML+CSS做一个漂亮简单的旅游网站——旅游网页设计与实现(6页)HTML+CSS+JavaScript

    - **导航栏**: 使用`&lt;nav&gt;`标签创建,结合CSS实现下拉菜单或侧边栏等功能。 - **轮播图**: 利用JavaScript控制图片的自动切换或手动切换。 - **详情页**: 展示景点详细介绍、地图位置、开放时间等内容。 - **地图...

    searchengine:使用初学者HTMLCSS重新创建了Google搜索,Google图片搜索和Google高级搜索页面

    对于Google图片搜索和高级搜索页面,可能涉及更多的交互元素,如图片预览、复选框、下拉菜单等。这需要进一步学习JavaScript和可能的库,如jQuery,来处理用户交互和动态内容。 总之,这个项目为初学者提供了练习...

    23种CSS导航条样式

    7. **下拉菜单**:利用相对定位和绝对定位实现下拉子菜单,可通过`hover`触发显示。 8. **悬停缩放**:利用`transform: scale();`改变链接的大小,增加交互感。 9. **分隔线**:在相邻链接之间添加`border-left`或`...

    HTML+CSS+JS网页设计期末课程大作业 DW个人博客网站制作 web前端开发技术 web课程设计 网页规划与设计

    可以利用HTML5的语义化标签(如`&lt;section&gt;`、`&lt;article&gt;`等)来组织结构,CSS3进行美化,再结合JavaScript实现动态效果(如导航栏的下拉菜单、轮播图等)。 - **公司介绍页面**: 除了基本的信息展示外,还可以加入...

    纸箱预订表单HTML模板

    例如,可能有输入框让用户输入纸箱尺寸、数量,下拉菜单选择纸箱材质,以及复选框或单选按钮来确定特殊需求等。每个元素都有特定的属性,如`name`用于标识数据,`placeholder`为输入框提供提示文本,`required`确保...

    flutter-common-widgets-app-master.zip

    5. **导航与路由**:`Navigator`和`MaterialPageRoute`是Flutter中实现页面跳转的主要手段,可以配合`BottomNavigationBar`或`Drawer`实现底部导航栏和侧滑菜单。 6. **状态管理**:项目可能包含了`Provider`、`...

    jquery搜索引擎切换特效代码

    此外,如果你想要实现更复杂的交互,比如下拉菜单式的搜索引擎选择,你可以修改HTML结构,并使用`dropdown`类库来增强用户体验。 总的来说,jQuery搜索引擎切换特效代码的核心在于利用jQuery的事件处理和DOM操作,...

    E02-WROD.zip

    9. **交互元素**:通过JavaScript和AJAX(异步JavaScript和XML)可以增加动态功能,如滑动展示、下拉菜单、弹出框和实时搜索建议,提升用户体验。 综上所述,"E02-WROD.zip"的内容可能涵盖了创建旅游网站所需的HTML...

    Material-Angular-API-zh:对Material Angular官网API的翻译

    如按钮(Button)、卡片(Card)、抽屉(Drawer)、对话框(Dialog)、网格列表(Grid List)、输入框(Input)、菜单(Menu)、滑块(Slider)、滑块(Slide Toggle)、选项表(Sidenav)、选择(Select)、下拉列表(Select)、表(Table)、...

    理发店:理发店业务页面

    CSS的animation和transition属性可用于创建简单的动画和过渡效果,比如导航栏的下拉菜单、滚动条的平滑滚动等,这些都能增加页面的吸引力。 总的来说,CSS在理发店业务页面的设计中起着至关重要的作用,它能帮助...

    Primal-Sound-Festival

    CSS(Cascading Style Sheets)用于定义元素的外观和布局,而JavaScript则可以实现动态效果,如滚动动画、下拉菜单或时间表滑动。 7. **SEO优化**:为了提高搜索引擎的可见性,开发者会在HTML中使用`&lt;meta&gt;`标签...

    Personal-Portfolio:我的投资组合网站

    例如,鼠标悬停时元素的平滑变化或导航栏的下拉菜单效果。 6. **网页字体和排版**:使用`font-family`、`font-size`、`line-height`等属性调整文本样式,创建吸引人的标题和段落。还可以利用网络字体服务如Google ...

Global site tag (gtag.js) - Google Analytics