Flex中TextInput的最大值

时间:2011-08-02 22:11:02

标签: flex actionscript-3

有没有人知道如何限制用户输入超过100的数字到flex中的textinput字段?

即。用户可以在0-100之间输入任意数字,但不包括101

提前感谢任何建议!

3 个答案:

答案 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)

一些选择:

  1. 使用NumericStepper并指定maximum属性。 使用定制的火花皮,你甚至可以上下移除 箭头使其像TextInput一样。
  2. 倾听keyUpkeyDown个事件并自行编写 验证以防止用户键入大于100的数字。 您可以将其绑定到NumericValidator