Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-01-2012, 12:33   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2012
Beiträge: 15
Kontaktformular - Validierung mehrerer Felder prüfen

Hallo liebe Flash'er,

nach langem hin und her wollte ich mich langsam in die objektorientierte Programmierung wagen und mir dabei eine kleine Aufgabe stellen.
Das Endprodukt soll eine Art Kontaktformular sein. Dabei habe ich einen Submitbutton, der bei Click ein Event einwirft, welchen alle InputFelder hören und beginnen ihre Validierung zu starten.
PHP-Code:
        public function init() {
            
// Erstellen eines neuen Buttons
            
var submitButton:Button = new Button;
            
// Positionierung des Buttons
            
this.this.positionX;
            
this.this.positionY;
            
this.label this.buttonLabel;
            
            
addEventListener(MouseEvent.CLICKclickHandler);
        }
        
        private function 
clickHandler (e:Event) {
            
stage.dispatchEvent(new Event('startValidate'));
        } 
Die Input-Felder validieren alle wunderbar und liefern ein Trace mit ihrem Validierungsstatus zurück.
Wie jedoch, kann ich nun meinem SubmitButton bzw. meiner eigenen Klasse zum versenden der Daten bescheid geben, wenn alle Felder valide sind? Alle Felder validieren sich ja unabhängig und wissen voneinander nichts.

Eventuell eine Eigenschaft setzen und prüfen, ob alle (notwendigen Felder) einen Validierungsstatus von 1 haben? Oder doch lieber irgendwie ein Event schmeißen, sodass das versenden so angekurbelt wird?

Ich stehe aktuell ein wenig auf dem Schlauch. Wenn mir jemand den ein oder anderen Tipp geben könnte, wäre dies spitze - vielen lieben Dank.
Lilos ist offline   Mit Zitat antworten
Alt 07-01-2012, 17:08   #2 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.495
Also die ganzen this kannst du weglassen. Das braucht es wenn überhaupt im Konstruktor.

Was soll die stage mit deinem Event anfangen? Wenn du das mit einem Event machen möchtest, dann ist das Event doch nur für das Formular interessant.

Wie ist das denn bisher strukturiert? Der Codeschnipsel macht mir das jetzt nicht klar. Mal abgesehen davon, dass der handler ja nur ein anderes Event feuert (warum dieser Umweg?).

mfg

sx
__________________

flintfabrik.de
shin10 ist gerade online   Mit Zitat antworten
Alt 07-01-2012, 18:07   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2012
Beiträge: 15
Vielen Dank für deine Antwort.

Die this kann ich rausschmeißen, stimmt.
Meine bisherige Konstruktion ist folgende:
Meine MainClass fügt im Konstruktor den ContentContainer hinzu:
PHP-Code:
public class main extends MovieClip {
    public function 
main() {
        
addChild(new ContentContainer);
    }

In den ContentContainer werden alle Elemente geworfen, die später auf die Bühne sollen.
PHP-Code:
public class ContentContainer extends MovieClip {

    public function 
ContentContainer():void {
        
addEventListener(Event.ADDED_TO_STAGEinit);
    }
    private function 
init(event:Event):void {

        
addChild (new Background(280255));
                
        
addChild (new SingleLineOfText('Kontaktformular''Verdana'160x00000024.05'bold'));
                
        
addChild (new MessageContainer(389.3,17.8));
                
        
addChild(new SubmitButton('Abschicken'490506));
                
        
addChild(new InputContainer('vorname_input'297.6593));
        
addChild(new InputContainer('nachname_input'327.6593));
        
addChild(new InputContainer('email_input'297.65377));
        
addChild(new InputContainer('url_input'327.65377));
                
        
addChild (new ErrorMessage);
    }

Ich wollte, dass meine inputContainer mitbekommen, wenn auf den SubmitButton gedrückt wird. Deswegen dachte ich mir, auf einen Klick, feuert der Button ein globales Event, auf welches (unteranderem) die inputContainer hören können.

Meine inputContainer sind wie folgt aufgebaut.
PHP-Code:
public class InputContainer extends MovieClip {        
    
    public var 
validationStatus 0;
        
    public function 
InputContainer (objectName:StringpositionY:Number 0positionX:Number 0) {
        
addEventListener(Event.ADDED_TO_STAGEinit);
            
        
this.name objectName;
        
this.positionY;
        
this.positionX;
            
    }
    private function 
init(e:Event) {
            
stage.addEventListener('startValidate'validate);
    }
    private function 
validate(e:Event) {
        var 
validationErrors:Array = new Array();
                    
        var 
textfieldOfInputContainer:Object this.getChildByName('input_txt');
        var 
currentTextOfTextfieldOfInputContainer:String textfieldOfInputContainer.text;
        
        switch (
this.name) {
            case 
'email_input'
                var 
regExForValidEMail:RegExp = /^([a-zA-Z0-9_-]+)@([a-zA-Z0-9.-]+).([a-zA-Z]{2,4})$/i;
                if (!
regExForValidEMail.test(currentTextOfTextfieldOfInputContainer)) {
                    
validationErrors.push('email');
                    
stage.dispatchEvent(new Event('invalidEmailError'));
                }
            break;
            
            case 
'url_input':
                if(
currentTextOfTextfieldOfInputContainer.substr(07) !== "http://") {
                    
currentTextOfTextfieldOfInputContainer "http://" currentTextOfTextfieldOfInputContainer;
                }
            break;
 
            default:
                if (
currentTextOfTextfieldOfInputContainer == "") {
                    
validationErrors.push('empty');
                    
stage.dispatchEvent(new Event('emptyInputError'));
                }
        }
        if (
validationErrors.length === 0) {
            
this.validationStatus 1;
        } else {
            
this.validationStatus 0;
        }
    }

Nun stehe ich vor dem Problem, meiner Klasse die zum versenden der Daten zuständig ist, bescheid zu geben, wenn alle Felder Valide sind.

Sicherlich werdet ihr viele kleine und große Schnitzer in meinen CodeSchnipseln finden. Gerne dürft' ihr auch dazu Verbesserungen schreiben, denn was ActionScript angeht bin ich noch blutiger Anfänger.
Vielen Dank für eure Antworten.

Geändert von Lilos (07-01-2012 um 18:09 Uhr)
Lilos ist offline   Mit Zitat antworten
Alt 07-01-2012, 18:18   #4 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
  • Zunächstmal sollte man in AS3 grundsätzlich Sprites statt MovieClips verwenden (es sei denn natürlich die MovieClips enthielten tatsächlich Zeitleistenanimationen).

  • Dann solltest Du in ContentContainer irgendwelche Referenzen (einzelne Variablen oder ein Array) zu Deinen Eingabefeldern anlegen, sonst wird's nur unnötig kompliziert später an sie ranzukommen.

  • Diese Referenzen kannst Du dann einfach durchlaufen um alle Felder auf Validität zu überprüfen.

  • Und das muss doch eigentlich garnicht dauernd geschehen, sondern nur dann, wenn der Nutzer den 'Abschicken'-Button drückt?!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (07-01-2012 um 18:20 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 14-01-2012, 22:12   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2012
Beiträge: 15
Danke euch. Die Tipps werde ich gleich mal umsetzten.
Lilos ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Flash CS3] E-Mail Validierung Lifescan Flash Einsteiger 0 05-01-2009 09:38
Kontaktformular Felder überprüfen lavazza2002 Flash Einsteiger 4 19-04-2008 15:46
Validierung von HTML Samuel HTML und CSS 22 27-06-2005 21:27
passwort validierung muemmes PHP und MySQL 7 10-07-2003 06:09
formular felder prüfen bamsi ActionScript 1 3 06-11-2002 13:21


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:52 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele