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
Répondre
Regardez la propriété restrict sur la classe TextInput. Réglez-le sur "0-9"
que diriez-vous du point décimal. Puis-je inclure cela aussi? – Treby
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. –
<s:TextInput id="textInput"
restrict="0-9"
widthInChars="20"
maxChars="20" />
<mx:TextInput id="textInput"
restrict="0-9"
widthInChars="20"
maxChars="20" />
Regardez mx.validators.NumberValidator: http://livedocs.adobe.com/flex/3/langref/mx/validators/NumberValidator.html
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.
<?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>
Il existe un contrôle appelé NumericStepper.
Voir: http://livedocs.adobe.com/flex/3/html/help.html?content=controls_11.html
Si vous ne voulez pas les flèches haut et bas là-bas, vous pouvez définir leur classe de peau null.
Cheers, Sly
Vous devez modifier la propriété afin que l'application demande que le clavier numérique de l'application.
try 'Numéro SoftKeyboard ""; '
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 « »:
Voir aussi: http: //stackoverflow.com/questions/6300528/flex-restrict-textinput-to-accept-only-decimal-numbers –