Besoin d'un code qui accepte uniquement les chiffres. Lors de la saisie, le code doit vérifier s’il s’agit d’un numéro, sinon il doit retirer la clé entrée ou ne pas la saisir du tout.
regardez la propriété restrict sur la classe TextInput. Réglez-le sur "0-9"
<s:TextInput id="textInput"
restrict="0-9"
widthInChars="20"
maxChars="20" />
<mx:TextInput id="textInput"
restrict="0-9"
widthInChars="20"
maxChars="20" />
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 que les flèches haut et bas soient là, vous pouvez définir leur classe d'habillage sur null.
Cordialement, Sly
<?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>
Regardez mx.validators.NumberValidator: http://livedocs.Adobe.com/flex/3/langref/mx/validators/NumberValidator.html
J'utilise quelque chose 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;
}
La fonction d'écoute de changement supprime tout ce qui dépasse le nombre de caractères de précision de la virgule, ou toute seconde occurrence de ".":
Je ne sais pas ce que vous voulez faire exactement. Si vous voulez juste faire la somme de ces deux choses, utilisez la commande suivante
{parseInt(txt1.text) + parseInt(txt2.text)}
votre exemple concatène simplement ces deux chaînes. Cet exemple tente de convertir le texte en nombre, puis d'additionner ces deux valeurs.
Vous devez modifier la propriété pour que l'application demande uniquement le clavier numérique de l'application.
essayez 'SoftKeyboard "numéro"; '