Problem beim erweitern des formulars mit JavaScript

  • Wie wäre es, der Funktion einen Parameter mit der id der zu leerenden Box zu übergeben, dann brauchst du nur eine Funktion, die beliebige Felder leert.
    Das Typ Ändern könntest du dann als weiteren Parameter machen, der entweder true (Typ ändern) oder false (Typ nicht ändern) sein kann.


    Damit brauchst du dann nur eine Funktion.

  • Ja, da hat Sören Recht ;)


    Außerdem ist folgendes doof: Wenn ich zum Beispiel Username eingebe und dann "rausgehe" und dann wieder reingehe um etwas zu korrigieren dann ist alles weg. Das solltest du korrigieren!

  • Zitat von "Sören"

    Wie wäre es, der Funktion einen Parameter mit der id der zu leerenden Box zu übergeben, dann brauchst du nur eine Funktion, die beliebige Felder leert.
    Das Typ Ändern könntest du dann als weiteren Parameter machen, der entweder true (Typ ändern) oder false (Typ nicht ändern) sein kann.


    Damit brauchst du dann nur eine Funktion.



    wie soll ich das achen? bzw. wie übergibt man zum beispiel die id?
    bin javascript noob^^



    Mir würde jetzt nur einfallen:

    Code
    <input type="text" onclick="meine_funktion(document.getElementById('benutzername').id);" />


    richtiger gedankengang? 8|

  • Nein, das ist sinnlos. Im Parameter übergibst du einfach nur die ID und dann sieht die Funktion so aus:


    Code
    function Clear(id) {
    ...jetzt ist der Parameter einfach unter der Variable id zu erreichen...
    }


    Dann packst du einfach die ID des Elements darein


    Code
    onclick="Clear(passwort);"


    und fertig...

  • Aber bitte

    Code
    onclick="Clear('passwort');"

    (mit Anführungszeichen)


    In der Funktion dann einfach

    Code
    function Clear(id) {
        document.getElementById(id).value = "";
    }
  • Dynamisch wäre das Ganze dann so:



    change_type Verhalten: obj und type sind erforderliche Werte, obj wird wie immer mit this gesetzt, this beinhaltet das aktuelle Element (in unserem Fall jeweils ein input Element). type wird entweder mit text oder password gesetzt. je nachdem welcher Typ gebraucht wird, standard ist ein optionaler Wert, den wir bei onblur mit dem Standard Value des Input Elements füllen (also hier Passwort)


    Nun überprüft change_type erst ein mal ob standard gesetzt ist, dann prüft es ob das Passwortfeld leer ist oder mit dem Standard gefültl ist, dann entscheidet es je nach dem ob das Feld zurpckgesetzt wird oder nicht.


    change_value Werhalten: obj und content sind erforderliche Werte, obj verhält sich genau wie bei change_type, content wird mit dem gewünschten neuen Value für das Feld gefüllt. Im onfocus Attribut müssen wir standard mti dem Standard Value Wert des Input Elements füllen, damit die Funktion entscheiden kann ob das Value vom Input Feld eine Usereingabe ist, oder eine Systemvorgabe welche nicht ersetzt werden muss.


    Das ganze ginge auch schlampig, jedoch deutlich kürzer (je nach dem wie viele Input Felder es werden..):


    Code
    <form action="" method="post">
            <fieldset>
                <legend>Bitte Einloggen</legend>
                <label><input type="text" name="benutzername" value="Benutzername" onclick="if(this.value == '') this.value = 'Benutzername';" onblur="if(this.value == '') this.value = 'Benutzername';" /></label>
                <label><input type="text" name="passwort" value="Passwort" onclick="if(this.value == '' || this.value == 'Passwort') { this.value = ''; this.type = 'password'; };" onblur="if(this.value == '' || this.value == 'Passwort') { this.value = 'Passwort'; this.type = 'text'; };" /></label>
                <input type="submit" name="button" value="Einloggen!" />
            </fieldset>
        </form>


    Beides ungetestet, beides sollte klappen 8)

  • Habe jetzt mal alle mängel versucht zu beheben:



    *EDIT*
    Basiii: ich bleibe aber ersteinmal bei meinem code, da er funktioniert und ich ihn erstehe. wenn ich javascript besser verstehe werde ich sicherlich auf deinen umsteigen

  • Was funktioniert ist immer ok, aber wirklich elegant ist es nicht, verglichen mit dem was man mit JavaScript anstellen kann ist es total billig, aber na ja, wie du bereits sagtest: du verstehst es, es funktioniert, also, warum fragst du dann erst? :wink:

  • Stimmt da hast du recht.
    PS: Was nützt es mir wenn ich nächste woche in deinen code schaue, der auf meinem pc ist und ihn nicht verstehe? da lerne ich erstmal javascript komplett :P


    So hat noch jemand was passendes für den thread zu bieten? :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!