• Domingo 28 de Abril de 2024, 19:06

Autor Tema:  Campos Dinamicos En Formulario  (Leído 2511 veces)

marlon

  • Miembro MUY activo
  • ***
  • Mensajes: 153
    • Ver Perfil
Campos Dinamicos En Formulario
« en: Miércoles 15 de Marzo de 2006, 18:26 »
0
estoy haciendo una pagina, en la cual se carga una cantidad de items variable. se trata de agregar productos a una factura. el caso es que se agregan tantos productos como quiera el usuario, para luego ser guardados en una tabla detallefactura. los productos estan guardados en la base de datos.

como puedo hacer para que cada vez que el usuario ingrese un producto, pueda mostrarse otro input para agregar otro producto mas?. teniendo en cuenta que todos los productos previamente agregados se muestren. de igual forma se debe relacionar cada producto con un campo en el cual se agregue la cantidad facturada para cada producto.

como complemento les digo que estoy trabajando en php con mysql.

cualquier ayuda se agradece.
"No trates de inventar la rueda... Si algo ya esta hecho, solo tómalo, analízalo, entiéndelo, adáptalo y úsalo..."
Marlon Chacon Herrera
[/i]

prueba2306

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Campos Dinamicos En Formulario
« Respuesta #1 en: Viernes 7 de Abril de 2006, 23:54 »
0
Hay que hay 2 soluciones:

1) Crea un div con un id (puedes ponerle un id="dinamicos", por ejemplo). Crea una función que agregue código al div

Código: Text
  1. (document.getElementById("dinamicos").innerHTML+="<input name='producto' />";
  2.  

Nota 1: tienes que llevar el control de cuantos has dado de alta para que cada campo tenga el atributo "name" distinto de los demás.

Nota 2: este código no funciona en todos los navegadores.

2) Verifica la función appendChild, este si funciona al 100%, pero es más complicado de  usar.

Altareum

  • Miembro MUY activo
  • ***
  • Mensajes: 327
    • Ver Perfil
    • http://www.avian.com.ar
Re: Campos Dinamicos En Formulario
« Respuesta #2 en: Sábado 8 de Abril de 2006, 04:20 »
0
Eeehm..........

Algunas correcciones a lo que puso prueba2306:
Todo navegador que se precie de usar la funcion getElementById() , es compatible con el manejo del DOM, por lo tanto también acepta la función appendChild(), con lo cual si el navegador no acepta la primera, tampoco acepta la segunda. Obvio que esto es lo ideal, no se si algún navegador usa solo una de estas, pero no debería hacerlo ya que ambas entran en las especificaciones del DOM según la W3C..

para el código que puso prueba2306, te diría que pruebes lo siguiente:
Código: Text
  1.  
  2. if(document.getElementById){
  3.        document.getElementById("dinamicos").innerHTML+= '<input name="producto" />';
  4. }
  5.  
  6.  

El problema de este código, es que si le pones un valor al campo producto (me refiero a ponerlo en el formulario, no en el codigo). Cuando vuelvas a ejecutar el código, borrará dicho valor dejando el campo vacío de nuevo.

Usando appendChild :
Esto es un poco más complicado y lleva más código, pero es lo ideal y no borra el valor del campo. No voy a explicar el código, porque me llevaría un rato largo, si no llegas a entender, avisa e intentaré explicarlo un poco.

Código: Text
  1.  
  2. function agregar(){
  3.   if(document.getElementById && document.createElement){
  4.     var dinamicos = document.getElementById("dinamicos");
  5.    
  6.     var input = document.createElement('INPUT');
  7.     input.name = 'producto';
  8.    
  9.     dinamicos.appendChild(input);
  10.    
  11.   }
  12. }
  13.  
  14.  

Espero que te sirva.
Altareum.
El postre!, el postre!, el postre!, el postre!, el postre!, el postre!.....
 | Klinka | Kiree | Avian |

mateamargo

  • Miembro activo
  • **
  • Mensajes: 67
    • Ver Perfil
Re: Campos Dinamicos En Formulario
« Respuesta #3 en: Jueves 27 de Abril de 2006, 22:06 »
0
Si usás PHP eso deberías resolverlo del lado del servidor agregando los tags "input" como creas necesario. Ya que Javascript para este caso es innecesario. Porque si cada vez que agregás un producto se tiene que incrementar el monto de la facutra, quiere decir que se previo a esto se guarda en la base de datos, y dejás de estar en el cliente.

Me gustaría ver (si es posible) alguna captura de pantalla de tu apliación para ver cómo encaja esta solución, porque puede variar según quieras que se vea.

Saludos.