2009-09-06 11 views
6

Editar: He resuelto el problema comenzando desde cero. Perdón por desperdiciar tu tiempo. Por favor vota para cerrar si te sientes inclinado.Agregue el elemento de formulario dinámicamente usando javascript - no enviando

Tengo problemas para obtener los datos reales en un formulario para enviar cuando los campos de entrada se agregan a través de javascript. Los campos aparecen, y en el lugar correcto, pero cuando hago un var_dump (nombre de campo) en el servidor, no aparece nada. Inspeccionar con encabezados HTTP en vivo me dice que el navegador no está intentando enviar los campos de formulario agregados dinámicamente.

¿Debo de alguna manera "adjuntar" mis entradas de formulario creadas dinámicamente al formulario?

Mi código:

HTML

<form id="att_form" method="post" name="add_attachments" enctype="multipart/form-data" action="#"> 
<-- below input to prove form submits, just not the dyn added elements --> 
<input name="data[one]" type="text" /> 
<div id="add_fields"></div> 
<input type="submit" /> 
</form> 

Javascript

function addFormField() 
{ 
var id = 1; 
var htm = "<p id='row" + id + "'><input type='text' size='20' name='txt[]' id='txt" + id + "' /></p>"; 
$("#add_fields".append(htm); 
} 

Cuando envío del formulario, mis entrada llamada de datos [un] se muestra como un valor POSTd , pero los agregados con addFormField() no. Aparecen, en el HTML, en el lugar correcto, pero no POST. ¿Debo agregar el elemento como elemento secundario a mi elemento de formulario para que se envíe?

He visto Submit form input fields added with javascript que es donde tuve la idea de agregar los datos específicamente al formulario secundario, pero eso requerirá una cierta reestructuración de mi CSS. Entonces, espero que sea algo simple que pueda hacer en el código anterior.

¡Gracias de antemano!

corregir: corrigió los errores ortográficos pero aún no funcionaba. Decidí usar la biblioteca libre del método JS que se discutió en el enlace de SO anterior, ya que funciona bien. ¡Gracias por la ayuda!

+0

¿Funciona al al si agrega el html a, por ejemplo, un nombre-'fieldset'-hijo del formulario? –

+0

No estoy seguro, pero estoy tratando de no atascarme en esta instancia. Va a entrar en un html bastante feo. Se agotó el tiempo asignado para probar todas las excelentes sugerencias, ¡pero gracias a todos por su ayuda! Problema de cierre. –

Respuesta

1

había una gran cantidad de errores tipográficos en el código. Por ejemplo, no cerró la etiqueta del selector para jquery.

Se puso $("#add_fields".append(htm);

debería haber sido $("#add_fields").append(htm);

Aviso parantheses los que faltan.

Pero creo que su problema radica principalmente en cómo está tratando de acceder a los valores a través de PHP. Acabo de poner tu fuente en una página de prueba y todo funciona si accedes a los valores correctamente.

<?php 
foreach ($_REQUEST['txt'] as $printme) 
    echo $printme."<br/>"; 
?> 

La fuente anterior funciona bien.

2

hay 2 errores tipográficos en su código: htm en lugar de HTML

y add_fields/add_files

0

es que su código real?

Si es así, no cerró la etiqueta de entrada y la etiqueta p .. así que tal vez la forma ellos ignoran ..

var htm = "<p id='row" + id + "'><input type='text' size='20' name='txt[]' id='txt" + id + "' /></p>"; 
0

Al agregar/agregar o usar innerHtml para colocar campos de formulario como html, en algún momento lo colocará fuera del formulario, lo verá como parte del formulario, pero internamente no lo es.

Para resolver este problema es necesario agregar form atributo con la entrada de archivos como form=myForm y myForm debe ser su forma de identificación.

Cuestiones relacionadas