Array Element nach Push entfernen

messmar

Erfahrenes Mitglied
Hallo zusammen,

ich verwende den fonlgenden Code um die Input-Felder, deren Values fehlen, anzuzeigen:

PHP:
$('form').find($('input').not(':hidden, :checkbox')).each(function() {
    var inputEl = $(this);
    
    if(!inputEl.val()){
        var notVal = $(this);
        formElements.push(notVal.attr('name'));
        $('.errBox').center(formElements);
    }
});

Es passt bis auf, dass es bei weiteren Kilcks auf den Submit-Button, die Namen des Feld-Elements ohne Wert, sich wiederholen.

Beispiel:
wenn es beim ersten Kilkc den Vornamen fehlen, dann kommt die Fehlermeldung:
, aber wenn der User es trotzdem nicht eingibt/Einträgt und versucht wieder das Formular abzuscihcken, dann kommt folgedendes dabei raus:

"Vorname, Vorname fehlt"
und beim dritten Mal:
"Vorname, Vorname, Vorname fehlt"
etc.

Wie kann ich sowas vermeiden?

Vielen Dank und Gruß
Messmar
 
Hi Messmar,

das kannst Du vermeiden indem Du assoziative Arrays verwendest.
Dein Code sieht nach jQuery aus. Also lasse einfach alle Input-Felder deines Formulars in ein array schreiben, und verwendest die id oder den namen des input feldes als Variablen-Schlüssel.

formular1_error['benutzername'] = "xibill";
formular1_error['passwort'] = "3393X291!";
formular1_error['vorname'] = "Hans";
formular1_error['nachname'] = "Wurst";

Deinen Code passt Du so an, das entweder ein Wert gesetzt ist oder leer (oder sogar gelöscht) ist. Dieses Array könntest Du dann ausgeben und es würde beim selben Fehler immer nur eine Meldung pro Input existieren.
 
Ich denke es liegt daran das du nach Elementen suchst die "not hidden" oder "not checkbox" sind, somit triffst du mit dieser Auswahl die Textbox zweimal.

Versuche es mal damit:

Javascript:
$(":text").each(function() {
    if ($(this).val() == "") {
        formElements.push($(this).attr("name"));
    }
});
 

Neue Beiträge

Zurück