Frage

Ich habe eine Form bekommen, die Ajax dynamisch erstellt wird unter Verwendung von (als Daten für die Formularelemente aus einer Datenbank kommen muss) und ich mag die Elemente der Form von Ajax vorlegen serialisiert. Ich bin derzeit nur teste meine Theorie von der jQuery Website unter Verwendung von Code nur um zu sehen, ob ich die Formularelemente aufnehmen kann und das ist, wo das Problem liegt:

$(document).ready(function() {
    $('#btnCustomSearch').live('click', function() {
            $('#results').html('');
            alert($('#customSearchTable :input').serializeArray());
            // get all the inputs into an array.
            var fields = $('#customSearchTable :input').serializeArray();
            jQuery.each(fields, function(i, field) {
                $("#results").append(field.name + " = " + field.value + ", ");
            });

            // now we'll reformat the data as we need

            // here we'll send the data via ajax

    });
});

Ich brauche ein paar Änderungen vornehmen, bevor die Daten zur Unterwerfung und dieser Code ist noch nicht geschrieben, aber was ich finde, ist, dass alle Eingabeelemente auf der Seite, die zum Zeitpunkt der Ladung der Seite bestanden sind korrekt aufgenommen, jeder Elemente, die Javascript bevölkerten verwenden richtig aufgenommen, aber jede mit ajax erstellt werden ignoriert.

Ich weiß, dass dies in der Regel aufgelöst werden mit „live“, aber ich bin unklar, wie dieses Problem zu beheben mit serializeArray(). Mit Ajax zusätzlichen Formularelemente werden den #customSearchTable hinzugefügt und diese sind es, nicht abgeholt werden.

Jede Hilfe groß geschätzt.

Danke

War es hilfreich?

Lösung

ich auf den Kommentar hier ein bisschen mehr erklären werde:

Wenn Sie anrufen .serializeArray() es Schleifen nur als <form> Vorlage würde oder so nah wie möglich sowieso , um die Elemente eingereicht werden zu lernen. Der wichtigste Teil ist hier :

.filter(function() {
  return this.name && !this.disabled &&
         (this.checked || rselectTextarea.test(this.nodeName) ||
         rinput.test(this.type));
})

Wie ein <form> würde einreichen enthalten keine Elemente ohne name Attribut , .filter() Anruf this.name verwendet, wird diese Elemente aus Einsen filtern serialisiert werden.

Andere Tipps

Für alle anderen, dass Funde dies als „Problem“ Bitte beachten Sie, dass laut Nick Craver Kommentar oben, alles, was erforderlich ist, um sicherzustellen, dass das Attribut „name“ auf die neuen Formularelemente angehängt wird, die dynamisch erstellt werden. Diese gelöst mein Problem! Vielen Dank in der Tat Nick!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top