El campo de entrada clonado a través de jQuery no se enviará

Tengo un conjunto de campos de entrada ocultos, que se clonan cuando se carga la página y/o se hace clic en un botón.

HTML:

<div class="book_form" id="book_form_hidden">
   <input type="checkbox" name="select" class="sell_checkbox" />
   <h1>ISBN:</h1>
   <input type="text" name="isbn" class="input_large" maxlength="20" />
   <h1>Condition:</h1>
   <input type="text" name="condition" class="input_medium" maxlength="100" />
   <h1>Price:</h1>
   <input type="text" name="price" class="input_price" maxlength="3" />
   <input type="hidden" name="title" value="">
   <input type="hidden" name="author" value="">
   <input type="hidden" name="publisher" value="">
   <input type="hidden" name="thumbnail" value="">
</div>

jQuery:

function addOne() {
    var clone = $("#book_form_hidden").clone().removeAttr("id");
    clone.find("input").each(function() {
        $(this).attr("name", $(this).attr("name") + "[" + n + "]");
    });
    n++;
    clone.appendTo($("#form_container"));
}

Cuando envío el formulario y envío los datos a PHP usando un botón de envío regular, no se envía ninguna de las entradas que se crearon a través de jQuery, sino solo los campos de entrada que inicialmente estaban ocultos (y tienen valores vacíos).

¿Necesito usar AJAX para enviar el contenido del formulario que se creó dinámicamente? Estoy confundido.

Muchas gracias por su ayuda.

preguntado el 30 de junio de 12 a las 21:06

Si mal no recuerdo tuve el mismo problema hace un tiempo. El problema es que javascript cambia el nombre attr solo de manera visible, no en el código de la página web, por lo que cuando se envía el formulario, la entrada aún tiene el nombre anterior (el mismo nombre que otra entrada). Resolví este problema al crear una nueva entrada en JS con el nombre ya establecido. -

#formulario_contenedor? Si el nombre es correcto, ¿está seguro de que las nuevas entradas están DENTRO del formulario? -

Para aclarar lo que dice @fdreger (que suena como la respuesta probable) si su HTML es <div id='form_container'><form> ... </form></div> o similar, está agregando los nuevos elementos al documento fuera de los límites del <form> por lo que no se incluirán con la información enviada. En su lugar, debe cambiar los elementos para que el <div> está dentro del <form> como <form><div id='form_container'> ... </div></form> (que los estándares estrictos dicen que debe hacer de todos modos, ya que un <input> no debe técnicamente ser hijo directo de <form>, IIRC). -

Las entradas están dentro del formulario, simplemente no las incluí en el ejemplo de código. Voy a probar el consejo de Cristy. Muchas gracias chicos, actualizaré cuando se solucione. -

Qué es n dentro de cada función? -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.