2016-07-05 16 views
0

Ich habe eine Menge von Code wieKann ich einen TextInput erstellen?

if (myTextInput.text != "") { 
    handleEvent(); 
} 

Does TextInput- haben eine Eigenschaft ich automatisch für eine leere Zeichenfolge verwenden können, um zu überprüfen?
ähnlich wie wenn ich es mag ein:

<s:TextInput id="myInput" enter="myInputHandler()" restrict="A-Za-Z0-9"/> 

dann wird myInputHandler() nur dann aufgerufen, wenn der Text alphanumerisches ist. Ich möchte eine zusätzliche Einschränkung hinzufügen, dass die Länge größer als 0 ist.

Ich weiß über die Validatoren, aber ich muss sie immer noch manuell aufrufen.

Antwort

3

Um eine TextInput Komponente "erforderlich" zu machen, Sie kann beispielsweise eine eigene Texteingabekomponente erstellen und eine Eigenschaft verwenden, um anzugeben, ob das Steuerelement erforderlich ist oder nicht, und einige Ereignislistener wie das Ereignis FocusEvent.FOCUS_OUT, um Ihren Benutzer zu erzwingen, etwas in diese Eingabe einzugeben.

Dafür nehmen Sie dieses Beispiel:

package myComponent 
{ 
    import flash.events.FocusEvent;  
    import spark.components.TextInput; 

    public dynamic class MyTextInput extends TextInput 
    { 
     private var _required:Boolean = false; 
     public function MyTextInput() 
     { 
      super(); 
      this.addEventListener(FocusEvent.FOCUS_OUT, on_KeyDown); 
     } 
     public function set required(required:Boolean): void { 
      this._required = required; 
     } 
     public function get required(): Boolean { 
      return this._required; 
     }  
     private function on_KeyDown(e:FocusEvent): void {   
      if(this.text == '' && this._required){ 
       this.setFocus(); 
      } 
     } 

    } 
} 

Natürlich ist dies nur ein Beispiel ist, können Sie jedes Verhalten verwenden Sie, wenn Ihre Benutzer die Eingabe leer ...

links

Dann verwenden dass neue Komponente:

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" 
       <!-- don't forget to include the namespace definition for your custom component --> 
       xmlns:MyComponent="myComponent.*"> 

    <MyComponent:MyTextInput required="true" restrict="A-Za-z0-9"/> 

</s:Application> 

Für mehr über Ihre eigenen Komponenten zu schaffen, werfen Sie einen Blick here.

Hoffe, dass kann helfen.

+0

Ich werde es abhalten, dies für einen anderen Tag zu akzeptieren, für den Fall, dass es etwas Einfaches gibt, was wir beide übersehen, aber ja, das spricht mein Problem an und ist genau das, wonach ich suche. – JETM

0

Versuchen:

if (String(myTextInput.text).length > 0) 
{ 
    handleEvent(); 
} 

Wenn das alles ist der Code, den Sie benötigen (keine zusätzlichen Befehle) dann tun, wie einzeilige:

if (String(myTextInput.text).length > 0) { handleEvent(); } 
+0

Ich denke, dass OP das Problem, dass Code Wiederholung zu vermeiden, ist der Code nicht selbst; -) – akmozo

+0

Hallo @akmozo, warum denkst du das? Ich schaute auf _ "Hat TextInput eine Eigenschaft, die ich verwenden kann, um automatisch nach einer leeren Zeichenfolge zu suchen?" _... Sie überprüfen mit 'IS NOT" ", also empfehle ich Code für' WENN Länge GRÖSSER ALS 0 'prüfen. Dies basiert auf _ "Ich möchte eine zusätzliche Einschränkung hinzufügen, dass die Länge größer als 0 ist" _. Sie sagten nie nichts darüber, sich nicht zu wiederholen. Mein Verständnis ist tief unten, sie bevorzugen es, nach ** String-Länge ** statt nach ** String-Inhalten ** zu überprüfen. –

+1

Hallo, ich denke, dass OP nach einem Attribut wie dem HTML5 'required' sucht, um den Benutzer zur Eingabe von Text zu zwingen (oder zumindest prüfen, ob die Eingabe nicht leer ist, ohne jedesmal denselben Prüfcode zu schreiben: 'txt.text! = '' 'oder' txt.length == 0' ...) ... – akmozo

0

Vielleicht, das ist nicht die Art von Lösung, sondern Sie die TextField- in eine FormItem setzen, die das „erforderlich“ Feld hat

Verwandte Themen