有没有人知道如何限制用户输入超过100的数字到flex中的textinput字段?
即。用户可以在0-100之间输入任意数字,但不包括101
提前感谢任何建议!
答案 0 :(得分:5)
试试这个,它应该会给你你正在寻找的结果 - 它不允许你输入任何超出范围的东西,并将它标记为无效(同时也有一个漂亮的工具提示信息)。
默认验证器仅提供验证输入的方法,但不限制范围内的条目。 restrict属性允许单个字符匹配(但不是您需要的范围。)
这会使用它们和一些事件来为你处理它 - 非常干净,易于阅读/改变范围......
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark" height="100%" width="100%">
<fx:Declarations>
<s:NumberValidator id="numberValidator" property="text"
minValue="0" maxValue="100"
source="{inputNumber}" trigger="{inputNumber}" triggerEvent="change"
valid ="inputNumber.toolTip=inputNumber.text;"
invalid ="inputNumber.text=inputNumber.toolTip;"/>
</fx:Declarations>
<s:TextInput id="inputNumber" restrict="0-9"/>
</s:Application>
P.S。看起来像使用工具提示作弊,但验证器会自动提供它自己的工具提示。如果您不喜欢这样,可以将其粘贴在另一个静态变量中 - 我这样做是因为验证器提供了如上所述的工具提示并保持其清洁。
答案 1 :(得分:4)
如果这是您的代码,您必须手动检查
<input change='_handleTextChanges(event)' />
这是回调
function _handleTextChanges(evt:Event):void{
var target:TextInput = evt.currentTarget as TextInput;
if(!target) return;
if(parseInt(target.text) > 100){
Alert.show("You can't enter a number grater than 100");
target.text = "100";
}
if(parseInt(target.text) < 0){
Alert.show("You can't enter a number smaller than 0");
target.text = "0";
}
}
我没有尝试过,但它应该有效
答案 2 :(得分:1)
一些选择: