我尝试通过指定如下的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!
提前多多感谢!
答案 0 :(得分:0)
这里有两个问题。
从RegExpValidator中删除触发器属性,该属性一次不需要源属性或触发器属性。
在声明块中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"/>
将textInput绑定到RegExpValidator组件使用创建完成事件。
<s:ComboBox id="zoomCB" width="60" maxChars="3" creationComplete="{regExpV.source = zoomCB.textInput}"/>
这样可以。