2009-11-17 22 views
23

Yalnızca sayıları kabul eden bir kod gerekiyor. Girdikten sonra, kod numara olup olmadığını kontrol etmelidir, eğer girilmemişse, girilen anahtarı kaldırmalı veya hiç girmemelidir.Esnek: Yalnızca sayı kabul eden Metin Girişi

+0

Ayrıca bakınız: http: //stackoverflow.com/questions/6300528/flex-restrict-textinput-to-accept-only-decimal-numbers –

cevap

30

TextInput sınıfındaki kısıtlama özelliğine bakın. mx.validators.NumberValidator at "0-9"

+0

ondalık noktaya ne dersiniz? bunu da ekleyebilir miyim? – Treby

+0

Evet, doğru bir şekilde yeniden kodlarsak sadece ".0-9" olur. Birden fazla ekleyebileceklerini unutmayın. eğer bunu böyle yaparsan. Yasal bir numara yapmak için onları kısıtlıyorsanız, işlemek için fazladan AS'ye ihtiyacınız olacaktır. –

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

Ben tam olarak ne yapmak istediğinizi emin değilim. Sadece şu ikisini toplamak istiyorsanız, sadece bu iki dizeyi bitiştirmek

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

sizin Örneğin aşağıdaki kullanın. Bu bir örnek, metni sayıya dönüştürmeyi ve sonra bu iki değeri toplamayı dener.

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

Sen uygulama yalnızca uygulamadan sayı klavyesini talep böylece özelliğini değiştirmek gerekir.

'SoftKeyboard' numarasını deneyin; '

1

Ben

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

değişiklik dinleyici işlevi ondalık noktadan hassas karakter sayısı veya herhangi ikinci geçtiği ötesinde her şeyi kaldırır gibi somthing kullanmak '':