2009-11-17 7 views
23

Vous avez besoin d'un code acceptant uniquement les numéros. Lors de la saisie, le code doit vérifier s'il s'agit d'un nombre, sinon, il doit supprimer la clé entrée ou ne pas l'entrer du toutFlex: entrée de texte acceptant uniquement le numéro

+0

Voir aussi: http: //stackoverflow.com/questions/6300528/flex-restrict-textinput-to-accept-only-decimal-numbers –

Répondre

30

Regardez la propriété restrict sur la classe TextInput. Réglez-le sur "0-9"

+0

que diriez-vous du point décimal. Puis-je inclure cela aussi? – Treby

+0

Oui, c'est juste ".0-9" si je me rappelle correctement. Notez qu'ils seront en mesure d'en ajouter plus d'un. si vous le faites de cette façon. Si vous les limitez pour faire un numéro légal, vous aurez besoin de quelques AS supplémentaires pour le gérer. –

13
<s:TextInput id="textInput" 
       restrict="0-9" 
       widthInChars="20" 
       maxChars="20" /> 
    <mx:TextInput id="textInput" 
       restrict="0-9" 
       widthInChars="20" 
       maxChars="20" /> 
0

Je ne sais pas exactement ce que vous voulez faire. Si vous voulez juste résumer ces deux, après l'utilisation

{parseInt(txt1.text) + parseInt(txt2.text)} 

votre exemple juste concaténer ces deux chaînes. Cet exemple essaie de convertir le texte en nombre, puis additionne ces deux valeurs.

2
<?xml version="1.0"?> 
<!-- Simple example to demonstrate the TextInput control. --> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" viewSourceURL="srcview/index.html"> 

    <mx:Panel title="Dodawanie dwóch liczb :)" height="279" width="238" 
     paddingTop="10" paddingLeft="10"> 

     <mx:TextInput id="src" 
      restrict="0-9" 
       maxChars="20" /> 
     <mx:TextInput id="dest" 
      restrict="0-9" 
       maxChars="20"/> 

     <mx:Button label="dodaj" click= "dodaj();" id="but"/> 
     <mx:Label text="Suma" width="59"/> 
     <mx:Label text="0" width="160" id="wynik"/> 

    </mx:Panel> 
    <mx:Script> 
    <![CDATA[ 
     import mx.formatters.NumberBase; 
     public function dodaj():Number 
     { 
     var liczba:Number = Number(src.text) + Number(dest.text); 
     wynik.text = liczba.toString(); 
     return 0; 
     } 

    ]]> 
    </mx:Script> 
</mx:Application> 
0

Vous devez modifier la propriété afin que l'application demande que le clavier numérique de l'application.

try 'Numéro SoftKeyboard ""; '

1

J'utilise somthing comme

<s:TextInput id="textInput" 
    restrict="0-9.\\-" 
    change="onChangeNumberTextInput(event, 6)"/> 

private function onChangeNumberTextInput(event:TextOperationEvent, precision:uint = 2):void 
    { 
     var strNumber:String = ""; 
     if (event.currentTarget is mx.controls.TextInput) 
      strNumber = (event.currentTarget as mx.controls.TextInput).text; 
     else if (event.currentTarget is spark.components.TextInput) 
      strNumber = (event.currentTarget as spark.components.TextInput).text; 
     else 
      return; 

     var ind:int = strNumber.indexOf("."); 
     if (ind > -1) 
     { 
      var decimal:String = strNumber.substring(ind + 1); 
      if (decimal.indexOf(".") > -1) 
       strNumber = strNumber.substring(0, ind + 1 + decimal.indexOf(".")); 
      if (decimal.length > precision) 
       strNumber = strNumber.substring(0, ind + 1 + precision); 
     } 

     if (event.currentTarget is mx.controls.TextInput) 
      (event.currentTarget as mx.controls.TextInput).text = strNumber; 
     else if (event.currentTarget is spark.components.TextInput) 
      (event.currentTarget as spark.components.TextInput).text = strNumber; 
    } 

Le changement fonction d'écouteur supprime tout ce qui dépasse le nombre de caractères de précision de la virgule, ou tout second « »: