FLEX 仿Google联想框效果_Flex

首先是事件源,也就是从何而起,如下的一个输入框:

复制代码 代码如下:

<mx:FormItem label="集团客户:" width="42%">
<!--change1-->
<mx:TextInput id="txtAssociation" width="235" maxChars="32" change="associate();"/>
</mx:FormItem>

然后就是处理效果,这些内容都是从数据库得到的数据,动态的查出的。

复制代码 代码如下:

import mx.collections.ArrayCollection;
            import mx.events.FlexMouseEvent;
            import mx.events.ListEvent;
            import mx.managers.PopUpManager;

            import resources.com.list.Association;

            // 经过渲染的联想结果List
            private var list:Association;
            // 临时字符串,用于判断当keyUp事件发生时,联想框的值是否发生改变,如未改变则不联想
            private var temp:String = '';
            private function changeAssociation():void{
                temp='';
                txtAssociation.text='';
                associationResult=null;
                if(list != null){
                    PopUpManager.removePopUp(list);
                    list = null;
                    // 清空临时字符串
                }
        }
            private function associate():void {
                var str:String = txtAssociation.text;
                if(str.length<2){
                    associationResult=null;
                }
                if (str != temp) {
                    if(str.length < 2){
                         if(list != null){
                             PopUpManager.removePopUp(list);
                             list = null;
                             // 清空临时字符串
                            temp = '';
                        }
                         return;
                    }
                    temp = str;

                    var params:Object = {};
                    params['areaNO'] = cbxArea.selectedItem.data;
                 params['netType'] = cbxNetType.selectedItem.data;
                    params['str'] = str;
                    params['handle'] = 'associate';
                    service4association.send(params);
                }
            }
            private function openAssociation():void {
                if(service4association.lastResult.items != null)
                     createAndShow(service4association.lastResult.items.item);

                else if(list != null){
                    PopUpManager.removePopUp(list);
                    list = null;
                    // 清空临时字符串
                    temp = '';
                }
            }
            private function createAndShow(dp:Object):void {
                // 每次打开联想框以前, 先清理缓存
                if(list != null){
                    // 将联想框从PopUpManager中移除
                    PopUpManager.removePopUp(list);
                    // 清空联想框实例
                    list = null;
                }

                list = new Association();
                //指定数据源
                list.dataProvider = dp;
                //获取鼠标坐标并赋值给list
                list.x = txtAssociation.x + 219;
                list.y = txtAssociation.y + 205;
                //大小
                list.minWidth = 400;
                list.maxHeight = 270;
                //注册list外鼠标按下和项目单击事件
                list.addEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE, mouseDownOutsideHandler);
                list.addEventListener(ListEvent.ITEM_CLICK, itemClik);

                //弹出并显示list
                PopUpManager.addPopUp(list, this, false);
            }
            private var associationResult:Object;
            private function itemClik(event:ListEvent):void{
                associationResult = ArrayCollection(Association(event.target).dataProvider).getItemAt(event.rowIndex);
                txtAssociation.text = associationResult.label;
                //Alert.show(associationResult.data);
                removePopUpIDisplay(Association(event.target));
            }
            private function mouseDownOutsideHandler(event:MouseEvent):void{
                removePopUpIDisplay(Association(event.target));
            }
            private function removePopUpIDisplay(obj:Association):void{
                // 清空临时字符串
                temp = '';
                obj.removeEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE, mouseDownOutsideHandler);
                PopUpManager.removePopUp(obj);
            }
            /**--------------------------联想-------------------------------**/

还有一个类,这里也贴出来吧。呵呵,共享原则,完全可实现。

复制代码 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<mx:List xmlns:mx="http://www.adobe.com/2006/mxml" initialize="initApp();" xmlns:filters="flash.filters.*"
    alternatingItemColors="[#EEEEEE, white]" buttonMode="true" >

    <mx:Script>
        <!--[CDATA[
            private function initApp():void{
                showEffect.play();
            }
        ]]-->
    </mx:Script>

    <mx:itemRenderer>
        <mx:Component>
            <mx:HBox horizontalGap="0" paddingLeft="5">
                <mx:Image source="@Embed('resources/icons/building.png')"/>
                <mx:Text text="{data.prefix}" paddingLeft="5"/>
                <mx:Text text="{data.str}" color="green"/>
                <mx:Text text="{data.suffix}"/>
            </mx:HBox>
        </mx:Component>
    </mx:itemRenderer>

    <mx:Parallel id="showEffect" target="{this}" duration="300">
        <mx:Fade />
        <mx:WipeDown />
    </mx:Parallel> 
</mx:List>

FLEX--仿Google联想框效果--现在好多地方都用到了这样的效果,当然,现在Google下线了,不让用了,但是跟网上说的一样,想办法,它还是能出来的.呵呵,不过对于我们没有多少必要了.这里在Flex当中也是为了能够更好的实现查询效果.所以也要求做这么一个,动态查询.

时间: 2024-09-26 01:05:29

FLEX 仿Google联想框效果_Flex的相关文章

asp+ajax仿google搜索提示效果代码_应用技巧

对于更完整的代码可以参考,这个是支持数据库的版本.经过编辑测试.Asp+Ajax仿google搜索提示效果 数据库版需要修改的地方有 复制代码 代码如下: javascript.js var url="ajax.asp"; //后台地址 var time_delayajax=300; //搜索延迟 var time_delayupdown=100; //方向键延迟 obj_div.style.top = (xtop + 20) + "px"; //20差不多是输入框

asp+ajax仿google搜索提示效果代码

对于更完整的代码可以参考,这个是支持数据库的版本.经过脚本之家编辑测试. Asp+Ajax仿google搜索提示效果 数据库版 需要修改的地方有 复制代码 代码如下: javascript.js var url="ajax.asp"; //后台地址 var time_delayajax=300; //搜索延迟 var time_delayupdown=100; //方向键延迟 obj_div.style.top = (xtop + 20) + "px"; //20差

jQuery实现仿Google首页拖动效果的方法_jquery

本文实例讲述了jQuery实现仿Google首页拖动效果的方法.分享给大家供大家参考.具体如下: 这里用jQuery.js库写了一个仿Google首页拖动的特效代码 <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>用JQUERY实现的仿Googl

一个仿糯米弹框效果demo_jquery

代码如下: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Tabs</title> <style type="text/css"> /* Remove margin padding */ body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,

基于jquery的仿百度搜索框效果代码_jquery

先看看整个的效果图:图一: 图二: 图三: 图四: 大概的效果图就这样,接下来直接看源码页面: 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="autoSearch._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DT

标签-仿百度搜索框只能提示上下键移动的功能效果 js+jquery

问题描述 仿百度搜索框只能提示上下键移动的功能效果 js+jquery 搜索结果不能上下移动,只能按一下,按第二下的时候结果只剩下一个了,currentSelIndex总是为0 ,currentSelIndex是记录 标签id的变量. 首先,我输入一个字符,匹配到的结果会在文本框下方显示出来.因为代码都是写在搜索框的onkeyup ()事件中的,每按一下键盘都会触发该事件,当我第一次按(下)键的时候,相应的会把选中的文本赋 给搜索框,所以按第二次的时候又会重新触发该事件,搜索条件变成了第一次按(

js实现仿阿里巴巴城市选择框效果实例

  本文实例讲述了js实现仿阿里巴巴城市选择框效果.分享给大家供大家参考.具体分析如下: 这并不是一个城市选择插件,在这里介绍只是为了mark一下二级联动的方法,此效果适用于有二级子菜单的效果,如导航栏.城市选择.类别选择等等. 样式效果是基于阿里的样式,懒得做其他调整,在area.css中仅仅是为了修改浏览器兼容性略做了一点调整. 城市数据是通过js构造,当然也可以通过后端取得数据,不过感觉没必要. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

JS实现仿google、百度搜索框输入信息智能提示的实现方法

  这篇文章主要介绍了JS实现仿google.百度搜索框输入信息智能提示的实现方法,实例分析了javascript实现智能提示功能的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了JS实现仿google.百度搜索框输入信息智能提示的实现方法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

.Net 文本框实现内容提示(仿Google、Baidu)

原文:.Net 文本框实现内容提示(仿Google.Baidu)   1.Demo下载: 文本框实现内容提示(仿Google.Baidu).rar 2.创建数据库.表(我用的sqlserver2008数据库) 1 CREATE TABLE Ceshi 2 ( 3 id VARCHAR(50) PRIMARY KEY NOT NULL, 4 cname VARCHAR(30) 5 ) 6 GO 7 INSERT INTO Ceshi 8 SELECT NEWID(),'jack1' UNION 9