Ir al contenido


Foto

Mi formulario no envia campos agregados con jquery


  • Por favor identifícate para responder
3 respuestas en este tema

#1 squall2501

squall2501

    Advanced Member

  • Miembros
  • PipPipPip
  • 82 mensajes
  • Locationen oa

Escrito 10 noviembre 2011 - 07:37

Estimados

Verán tengo el siguiente problema tengo un formulario para encuestas en el hay un input para la pregunta y dos para la respuesta.La persona puede eliminar uno de estos input pero ademas agregar mas input respuesta por si necesita mas respuestas, es decir, como minimo una respuesta y las respuestas que estime conveniente

Tengo  un boton al lado de cada input respuesta con una imagen para eliminar ese campo o agregar otro respectivamente

Hasta el momento todo bien,pero al momento de enviar el formulario los campos que agregue no son enviados

Ojala me haya explicado bien todo caso aqui dejo el codigo por sia lguien me puede ayudar  gracias

Aqui dejo una imagen de  lo que intento hacer

Imagen Enviada


Las funciones jquery

[java]




$(document).ready(function(){
   
//copio el input   
  $('.add').click(function(){
       
       
        $(this).parent().clone().appendTo('#pregu');
    })
   
//envio el formulario
  $('#enviar').click(function(){
     
      $('#formenc').submit();
     
  })

})

</script>

[/java]


El formulario

[java]


<form method="post" action="add.php" id="formenc" name="formenc">


       
                        <div id="pregu"> 
                            <div>
                               
                                <label for="pre">Pregunta</label>
                            </div>   
                               
                              <div>   
                                <input style="width:200px;" type="text" size="40" name="pre" id="pre"/>
                           
                            </div>
                           
                            <div>   
                                <label>Posible Respuesta</label>
                                <input style="width:200px;" type="text" size="20" name="resp[]" id=""/>
                                <img class="add" src="img/add.png" width="16" height="16" title="agregar respuesta"/>
                                <img src="img/trash.gif" width="16" height="16" title="eliminar respuesta" onclick="$(this).parent().remove();"/>
                               
                            </div>
                            <div>   
                                <label>Posible Respuesta</label>
                                <input style="width:200px;" type="text" size="20" name="resp[]" id=""/>
                                <img  class="add" src="img/add.png" width="16" height="16" title="agregar respuesta"/>
                                <img src="img/trash.gif" width="16" height="16" title="eliminar respuesta" onclick="$(this).parent().remove();"/>
                            </div>
                          </div>   
                           
                           
                   
                       
                        <hr/>
                    <p>
                           
                            <a id="enviar" class="uibutton icon next" href="#button"  >Enviar Encuesta</a>
                           
                    </p> 


</form>

[/java]

Si hago un print_r($_POST) en add.php

[java]



Array ( [pre] => pregunta1 [resp] => Array ( [0] => resp1 [1] => resp2 ) )

[/java]

Como ven me trae los valores de los campos ,pero no los que se agregan al presionar el boton para clonar el campo también lo intente sin clonarlos usando .append('aqui el input'); ...pero igual me trae lo mismo



Gracias nuevamente



  • 0

#2 kosios

kosios

    Member

  • Miembros
  • PipPip
  • 39 mensajes

Escrito 11 noviembre 2011 - 08:54

Hola amigo, bueno yo creo q tu problema de tiempo real, veras alguno de los objetos q estan creando en realidad no existen en el pagina, aveces pasa q al mandar datos no envia nada porq no existe dichos campos... pues por asi decirlo..

entonces yo creo q podria solucionarlo asi.

$(function(){
   
  $("form-encuesta").live("submit", function(){

//from-encuesta es el id del formulario que vas a enviar por ajax jquery, submit es el metodo del boton
// la funcion live me permite que los objetos creados en tiempo real sean tomados como campos que //siempre han esta alli.... me copias.
 
    $.ajax({

            post: 'adondetengaqir.php',
            data: ,
          etc.....
      //el resto del codigo ya es simple para vos.
        })

     
      })

})


Espero te halla servido, recuerda live cuando estes creando objetos en tiempo real...
  • 0

#3 dec

dec

    Member

  • Miembros
  • PipPip
  • 14 mensajes

Escrito 11 noviembre 2011 - 12:44

Hola,

Algo raro hay por ahí... yo recuerdo haber hecho algo parecido sin problemas, y, sin utilizar los "live" de jQuery, puesto que estos se introdujeron después. Lo más sencillo que se me ocurre es que estés obviando los atributos "name" y tal vez también "id" de los elementos que añades al formulario. Sin estos atributos (por lo menos "name") no se enviará el campo correspondiente junto al formulario.

Por otro lado, salte de tu aplicación y haz alguna prueba "en limpio". Es decir, prepárate un documento HTML donde muestres un formulario sencillo, y luego añade elementos utilizando Javascript (en realidad jQuery terminará añadiendo los elementos al DOM, si no me equivoco, tal como podrías hacerlo de forma "nativa"). Lo que quiero decir es que compruebes si no te funciona así, con un ejemplo sencillo, ideado sólo para comprobar que el problema no esté en otro lugar de tu aplicación.
  • 0

#4 kosios

kosios

    Member

  • Miembros
  • PipPip
  • 39 mensajes

Escrito 12 noviembre 2011 - 06:39

El amigo tiene razón cuida el name y id,
name="resp[]" id=""  los veo extraños, pero de todas formas, yo probaria con dos campitos y un boton...y si funciona debe funcionar para todo...

Nota si vas a utilizar $.ajax de jquery para mandar datos recuerda q para loa datas: serialize() es importate el name de los inputs....

y si vas a mandar el formulario declarando variables al data: {var name:name} es importante los id de los inputs, un dato no mejor jejeje
  • 0




IP.Board spam blocked by CleanTalk.