jQuery erzeugte Felder im Formular erscheinen nicht im $_POST

Hi,

ich habe ein seltsames Problem seit gestern und komme nicht auf die Lösung da print_r($_POST) ständig nichts zurückliefert.

Problem ist wie folgt:

In einer Schleife erzeuge ich zunächst 5 Felder




	<?php for($i = 0; $i < 5; $i++):?>

		<?php

		$this->renderPartial('_task', array(

			'model'	=>	$oEntities[$i],

			'index'	=>	$i,

		));

		?>

	<?php endfor */?>

	</table>






<tr>	

	<td><?php echo CHtml::activeTextField($model, "[$index]entity1"); ?></td>

	<td><?php echo CHtml::activeTextField($model, "[$index]entity2"); ?></td>

</tr>



==> Dies wird korrekt erzeugt und die Werte erscheinen später in einem Array in print_r($_POST)




    [Entity] => Array

        (

            [0] => Array

                (

                    [entity1] => 

                    [entity2] => 

                )


            [1] => Array

                (

                    [entity1] => 

                    [entity2] => 

                )


            [2] => Array

                (

                    [entity1] => 

                    [entity2] => 

                )


            [3] => Array

                (

                    [entity1] => 

                    [entity2] => 

                )


            [4] => Array

                (

                    [entity1] => 

                    [entity2] => 

                )


        )


    [yt1] => Save

)



Erzeuge ich nun mit jQuery ein neues Feld und hänge es innerhalb des Formulars ein, so erscheint dies einfach nicht im $_POST




<script>

$(".tasks-add").click(function(e){

	i = $(".tasks tr").size();

	$(".tasks").append('<tr><td><input name=\"Entity[' + i + '][entity1]\" id=\"Entity_' + i + '_entity1\" type=\"text\" ></td><td><input name=\"Entity[' + i + '][entity2]\" id=\"Entity_' + i + '_entity2\" type=\"text\" ></td></tr>')

});



Im Firebug werden die Felder an die richtige Stelle eingesetzt.




<table class="tasks" style="width: 500px;">

<tbody>


<tr>	

	<td><input name="Entity[0][entity1]" id="Entity_0_entity1" type="text" maxlength="1000"<</td>

	<td><input name="Entity[0][entity2]" id="Entity_0_entity2" type="text" maxlength="1000"></td>

</tr>			

<tr>	

	<td><input name="Entity[1][entity1]" id="Entity_1_entity1" type="text" maxlength="1000"></td>

	<td><input name="Entity[1][entity2]" id="Entity_1_entity2" type="text" maxlength="1000"></td>

</tr>			

<tr>	

	<td><input name="Entity[2][entity1]" id="Entity_2_entity1" type="text" maxlength="1000"></td>

	<td><input name="Entity[2][entity2]" id="Entity_2_entity2" type="text" maxlength="1000"></td>

</tr>			

<tr>	

	<td><input name="Entity[3][entity1]" id="Entity_3_entity1" type="text" maxlength="1000"></td>

	<td><input name="Entity[3][entity2]" id="Entity_3_entity2" type="text" maxlength="1000"></td>

</tr>			

<tr>	

	<td><input name="Entity[4][entity1]" id="Entity_4_entity1" type="text" maxlength="1000"></td>

	<td><input name="Entity[4][entity2]" id="Entity_4_entity2" type="text" maxlength="1000"></td>

</tr>		


<tr>

<td><input name="Entity[6][entity1]" id="Entity_6_entity1" type="text"></td>

<td><input name="Entity[6][entity2]" id="Entity_6_entity2" type="text"></td>

</tr>

</tbody>

</table>



Das seltsame:

Wenn ich den Quellcode der erzeugten Felder in die View kopiere, so erscheinen die Felder im $_POST.




<tr>

<td><input name="Entity[6][entity1]" id="Entity_6_entity1" type="text"></td>

<td><input name="Entity[6][entity2]" id="Entity_6_entity2" type="text"></td>

</tr>



==> wurde korrekt erzeugt und an die richtige Stelle kopiert. Die Werte von hier erscheinen jedoch nicht im $_POST

Könnt ihr mir hier bitte weiterhelfen.

thx!

ja, dass Problem ist sehr seltsam

http://www.yiiframework.com/wiki/141/javascript-tabular-input/

jetzt habe ich auch das hier umgesetzt, jedoch wird mir nachwievor nichts zurückgeliefert.

Kann es sein, dass zwischen der View und dem Controller es einen Filter gibt, der nur bestimmte POST Daten erlaubt, oder bei neu hinzugefügten Felder etwas zusätzlich erlaubt werden muss?

Ich hatte ein aehnliches Problem und konnte es nur dahingehend loesen, dass ich ein Model (CFormModel) mit den benoetigten Variablen erstellt habe. Aendere ich den Type in GET hatte ich das Model nicht benoetigt…

Check doch nochmal mit Firebug, was wirklich per POST im Request geschickt wird. Wenn deine Formularfelder richtig generiert werden, müssen sie auch in den POST-Daten auftauchen. Yii ist es egal, ob ein Formularelement dynamisch auf der Clientseite erzeugt wurde. POST-Daten werden auch nicht gefiltert oder so. Wenn also nix ankommt, stimmt mit deinem Formular was nicht.

Hatte z.B. schon mal den Fall bei mir, dass ich mit jQuery erzeugte Elemente ausserhalb meines <form> tags eingefügt hatte. Dann wird natürlich beim Senden nichts mitgeschickt.

hi.

danke für eure Antworten.

Nachdem ich den Fehler nicht finden konnte, habe ich die gesamte View gelöscht und alles neugeschrieben.

Anschließend habe ich sie mit der Vorgänger Version vergleichen.

Der Unterschied war ein zuviel geöffnetes div innerhalb des Formulars. mmh, das so etwas stören kann, kann ich mir nicht vorstellen