使用Flex中的RegExpValidator验证comboBox中的用户输入

时间:2014-02-21 17:37:46

标签: regex flex combobox validation

我尝试通过指定如下的RegExpValidator来执行上述操作:

<fx:Declarations>
    <mx:RegExpValidator id="regExpV"
                        source="{zoomCB}"  property="textInput"
                        expression="^([1-9]|[1-9][0-9]|[1-9][0-9][0-9])\%?$"
                        invalid = "validateZoomValue(event);"
                        valid = "validateZoomValue(event);"
                        trigger="{zoomCB}"
                        triggerEvent="change"/> 

</fx:Declarations>

用于组合框:

<s:ComboBox id="zoomCB" width="60" maxChars="3" />

但要验证的功能

private function validateZoomValue(event:ValidationResultEvent):void
{
            if(event.type == "valid")
            {
                Alert.show("Valid");
            }
            else
            {
                Alert.show("Invalid");
            }
}
尽管输入中给出的字符串没问题,

总是抛出无效!问题是要检查的属性应该是textInput的text属性,但是如何指定呢? 我尝试将source设为“{zoomCB.textInput}”和property =“text”,但它无法绑定到zoomCB.textInput!

提前多多感谢!

1 个答案:

答案 0 :(得分:0)

这里有两个问题。

  1. 从RegExpValidator中删除触发器属性,该属性一次不需要源属性或触发器属性。

  2. 在声明块中zoomCB.textInput此处textInput尚未创建,因此您无法在绑定表达式中使用。

    <mx:RegExpValidator id="regExpV"
                        property="textInput"
                        expression="^([1-9]|[1-9][0-9]|[1-9][0-9][0-9])\%?$"
                        invalid = "validateZoomValue(event);"
                        valid = "validateZoomValue(event);"
                        triggerEvent="change"/> 
    
  3. 将textInput绑定到RegExpValidator组件使用创建完成事件。

    <s:ComboBox id="zoomCB" width="60" maxChars="3" creationComplete="{regExpV.source = zoomCB.textInput}"/>
    

    这样可以。