Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-10-2006, 15:32   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 1
Eine Funktion dynamisch für mehrere Instanzen erstellen, Variablen dynamisch füllen

Ich möchte mehrere Textfelder dynamisch mit Funktionen versehen.
Konkret sollen die Felder vorausgefüllt werden (z.B. "Ihr Vorname", "Ihr Nachname" etc.) werden.
Bei einem Click ins Feld (onSetFocus) soll der Text ausgeblendet werden, aber nur wenn er noch auf der Standardeinstellung steht.
Als zweite Funktion soll beim Click außerhalb (onKillFocus) wieder der Standardwert eingetragen werden, sofern dort nichts ("") eingetragen wurde.

Es gibt mehrere Textfelder, für die ich die beiden Focus-Funktionen jeweils nur einmal erstellen wollte.

Ich konnte zwar in einer Schleife dynamisch die verschiedenen Instanzen der Textfelder ansteuern, jedoch die Funktion nicht immer dynamisch füllen.

Daher meine Lösung mit einer zusätzlichen Hilfsfunktion "getTextVorausfuellen".

Wie kann ich in der Schleife statt "getTextVorausfuellen(...)" jeweils das gemeinte Wort eintragen lassen?
Ich hatte ursprünglich mit einem zweiten Array angefangen, in dem die Worte dann standen.
Aber der Zugriff auf das jeweilige "i" der Schleife wurde dann wohl immer genau so eingetragen (z.B. textfelder_vorausfuellen_array[i]).
Das sollte so natürlich nicht sein.

Geht das irgendwie mit eval oder wie kann man expliziten Code dort dynamisch in die Funktion einfüllen?

Wäre super, wenn jemand eine Idee hätte!

PHP-Code:
textfelder_array =
    new Array(
"vorname""nachname""strasse""nr""plz""ort""email""telefon""nachricht");

    
// Funktionen der Textboxen setzen
    
function getTextVorausfuellen(ziel){
    
ziel String(ziel);
    
ziel ziel.substr((ziel.lastIndexOf(".")+1),(ziel.length-ziel.lastIndexOf(".")+1));
    
    if (
ziel.lastIndexOf("_textbox")!= -1// ggf "_textbox" abschneiden
        
ziel ziel.substr(0,ziel.lastIndexOf("_textbox"));

    switch(
ziel){
        case 
"vorname":
            return 
"Vorname";
        break;
        case 
"nachname":
            return 
"Nachname";
        break;
        case 
"strasse":
            return 
"Straße";
        break;        
        case 
"nr":
            return 
"Nr.";
        break;                
        case 
"plz":
            return 
"PLZ";
        break;                        
        case 
"ort":
            return 
"Ort";
        break;                                
        case 
"email":
            return 
"E-Mail-Adresse";
        break;                                
        case 
"telefon":
            return 
"Telefon";
        break;                                
        case 
"nachricht":
            return 
"Ihre Nachricht";
        break;                                        
    }
    
trace(ziel);
}
    
for (
i=0;i<textfelder_array.length;i++){

    
this[textfelder_array[i]+"_textbox"].onSetFocus  = function (){
        
with (this){
                if (
text == getTextVorausfuellen(this)){ // WIE BESSER?
                
text "";
            }
        }
    }
    
    
this[textfelder_array[i]+"_textbox"].onKillFocus  = function (){
        
with (this){
                if (
text == ""){
                
text getTextVorausfuellen(this);// WIE BESSER?
            
}
        }
    }
    
    

petershaw 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



Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele