2011-08-02 91 views
0

有誰知道限制用戶輸入超過100的數字到flex中的textinput字段的方法嗎?Flex中TextInput的最大值

即用戶可以輸入之間,包括0-100,但事先沒有101

感謝您的任何意見任何號碼!

回答

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"; 
    } 
} 

我還沒有嘗試過,但它應該工作

+0

非常棒!謝謝! – korymiller

1

一幾個選項:

  1. 使用a NumericStepper並指定maximum屬性。 使用自定義火花皮膚,您甚至可以刪除上下箭頭以使其像TextInput一樣工作。
  2. 監聽keyUpkeyDown事件,寫自己的 驗證來防止用戶鍵入數字大於100 您可以配合此爲NumericValidator
5

試試這個,它應該給你你正在尋找的結果 - 它不會允許你輸入任何超出範圍的東西,並且將它標記爲無效(還有一個漂亮的工具提示信息)。

默認驗證程序只提供驗證輸入的方法,但不限制範圍內的輸入。限制屬性允許單個字符匹配(但不是像你需要的範圍)。

這使用它們兩個和一些事件來處理它 - 非常乾淨,易於閱讀/更改該範圍。 。

<?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> 

Ps這可能看起來像使用工具提示作弊一樣,但驗證程序會自動提供它自己的工具提示。如果你不喜歡那樣,你可以把它粘在另一個靜態變量中 - 我這樣做是因爲驗證器提供了上面提到的工具提示並保持它的清潔。

相關問題