0

当用户输入的值不是该组合框的数据提供者中的值时,我想对火花组合框进行验证。如果用户输入的值不是数据提供者中的值,任何人都可以给我代码如何进行验证应进行焦点更改验证。谢谢

4

1 回答 1

0

您可以将属性设置textInput为组合框,并管理对来自关联函数的输入的检查...

<fx:Script>
    <![CDATA[
        protected function change(event:TextEvent):void
        {

        }
    ]]>
</fx:Script>

<s:ComboBox  textInput="change(event)"/>

flash.display.InteractiveObject.textInput

当用户输入一个或多个文本字符时调度。各种文本输入法都可以生成此事件,包括标准键盘、输入法编辑器 (IME)、语音或语音识别系统,甚至是粘贴没有格式或样式信息的纯文本的行为。

事件类型:
flash.events.TextEvent.TEXT_INPUT

编辑

<fx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;
        import mx.controls.Alert;
        import mx.events.FlexEvent;
        //dataprovider initialization
        [Bindable]private var d:ArrayCollection = new ArrayCollection([
            {name: "Values 1"}, {name: "Values 2"}, {name: "Values 3"}
            ]);

        protected function change(event:TextEvent):void
        {      // if enter key is pressed
            if (event.text.charAt(event.text.length-1) == "\r")
            {       
                // if the text inserted in the combobox is one of the 
                // item in the dataprovider 
                if (comboBox.selectedIndex >= 0)
                    Alert.show("something selected");
                else   // if the text is not an item in the dataprovider
                    Alert.show("nothing selected");

            }
        }
    ]]>
</fx:Script>

<s:ComboBox id="comboBox" textInput="change(event)"
       dataProvider="{d}" labelField="name"/>

编辑 2

要从动作脚本设置边框颜色,您可以执行以下操作:

comboBox.setStyle("borderColor","#ff0000"); // set the bordercolor to red

如果您不需要对插入的文本进行特别检查,您可以简单地在 ComboBox 上设置属性更改

        protected function index_change(event:IndexChangeEvent):void
        {
            if (comboBox.selectedIndex >= 0 )
                Alert.show("something selected")
            else
                Alert.show("nothing selected");

        }
        <s:ComboBox id="comboBox" dataProvider="{d}" labelField="name"
            change="index_change(event)"
             />
于 2012-05-03T07:36:58.110 回答