jQuery Buchung nicht alle Eingaben eines Formulars nach .append()
Habe ich ein Formular dynamisch generiert mit der Methode .append() von jQuery.
Ich kann eine beliebige Anzahl von hinzufügen neuer Eingang, textbox, cmbbox, etc...
Aber das problem ist, dass wenn ich das füllen der form, die PHP target nicht erhalten, die neue Eingabe Hinzugefügt, sondern nur die vars verbunden, um die Eingabe bereits in der form vor der append().
Irgendwelche Ideen?
Javascript:
$("#button").live('click',function add(){
$("#list").append(
'<li style="height:20px;">'
+'<input type="text" class="text" id="prova" name="prova[]" value="prova">'+
'</li>'
);
});
Html:
<input type="submit" id="button" value="Add input">
<form name = "form" id="form" action="post.php" method="POST">
<ul style="width:670px;padding:0px 0px 30px 0px" id="list">
</ul>
<input type="submit" id="submit" value="Submit">
</form>
PHP:
<?php
print_r($_POST);
?>
Der code funktioniert gut, Es gab ein problem bei der Positionierung des Tags <form> das war in einem <div> und hatte, draußen zu sein
Dieser Kommentar ist der Schlüssel, der führte mich zu meiner Reparatur. Ich hatte meine
Dieser Kommentar ist der Schlüssel, der führte mich zu meiner Reparatur. Ich hatte meine
<form>
tag in der <tbody>
- tag der Tabelle, zu denen ich mich .append()
ing. Zog die <form>
tag über den Tisch und legt jetzt auch die Felder angehängt.
InformationsquelleAutor Claudio | 2010-10-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Problem 1:
Ihre
#button
sollte nicht sein Typsubmit
, da Sie nur wollen, um es zu verwenden, fügen Sie dem Formular und nicht das Formular abschicken. So sollten Sie haben:Problem 2:
Sind Sie überschreiben Ihre Variablen. Die
name
wird die variable gesendet mit der form, so dass jederinput
außerdem muss ein neuer name, oder der variable muss ein array sein.Darüber hinaus können Sie nicht mehr als ein element mit dem gleichen
id
.Der einfachste Weg, um dieses Problem zu lösen ist, um
prova
einem array mit der formprova[]
:jsFiddle-Beispiel
Es funktioniert. Werfen Sie einen Blick auf dieses Beispiel ==> jsfiddle.net/XAZD7 (klicken Sie auf
add input
ein paar mal, dannsubmit
- ändern Sie die Werte in den Eingaben auch, wenn Sie möchten)Es funktioniert 🙂 vielen Dank, es war ein problem in der tag <form> im html-Format (nicht im geposteten code)
Du bist willkommen 😉
InformationsquelleAutor Peter Ajtai
Sind Sie abfangen der
click
Ereignis und hinzufügen von Elementen zu der form, aber die Veranstaltung hat bereits begonnen, und die Standard Aktion (abschicken des Formulars) ohne erneute überprüfung des Inhalts von der form.Sollten Sie aufhören, die Veranstaltung nach dem hinzufügen der Felder (preventDefault sollte die richtige Wahl sein), und re-submit der form.
Etwas entlang diesen Linien:
Ich habe es noch nicht getestet, aber ich bin ziemlich zuversichtlich, dass es funktionieren sollte 🙂
Ich habe den code Hinzugefügt
Nichts, vielleicht ein codeigniter-problem?
Anstelle der Verwendung von
preventDefault()
ist, wäre es viel einfacher zu ändern, dietype
von#button
zubutton
stattsubmit
. Auch dies löst nicht das mehrere identischename
s.... siehe meine Antwort.Auch, warum haben Sie eine
$('#form').submit();
als Letzte Zeile? Das werde reichen Sie das Formular das erste mal#button
geklickt wird... die machen#button
ziemlich nutzlos.InformationsquelleAutor MartinodF
Nur um zu klären, und dass alle anderen Probleme beiseite, @Claudio ' s Hinweis ist die richtige Antwort hier. Ich hatte gerade das gleiche problem, der Knopf wurde der Typ 'button', und das neue element wurde der name wird dynamisch erhöht. Alles sah gut aus, aber die hinzugefügten Elemente würde nicht reichen.
Dann bemerkte ich, dass meine form tags innerhalb des table-tags. Ich zog Sie nach draußen und alles funktioniert wie geplant.
InformationsquelleAutor Dazbert
Irgendwelche code zu zeigen? Um php zu "sehen" die vars vorgelegt, die Sie haben, um sicherzustellen, dass es hat die "name" - Attribut angegeben ist auf dem Formular-Elemente. Ich habe das Gefühl, Ihr Problem wird mit dem jQuery nicht die php.
InformationsquelleAutor jsuggs
Beste Vermutung: Sie haben nicht name-Attribute für Ihre dynamisch hinzugefügte Elemente.
name
Attribute, aber Sie sind alle identisch.InformationsquelleAutor Thomas