Foros del Web » Programando para Internet » Javascript »

Problema al crear un form con JavaScript

Estas en el tema de Problema al crear un form con JavaScript en el foro de Javascript en Foros del Web. Hola. Estoy un poco desesperado con este tema que no logro resolver, si alguien me puede echar una mano se lo agradeceré. Voy a resumir ...
  #1 (permalink)  
Antiguo 30/04/2011, 05:07
 
Fecha de Ingreso: febrero-2011
Mensajes: 83
Antigüedad: 13 años, 1 mes
Puntos: 0
Problema al crear un form con JavaScript

Hola.

Estoy un poco desesperado con este tema que no logro resolver, si alguien me puede echar una mano se lo agradeceré.

Voy a resumir el tema.

Yo quiero hacer un formulario de momento sin ningún campo, solo con tres botones. Uno sera "añadir puesto trabajo", otro sera "quitar puesto de trabajo" y el otro "enviar".

Mediante JavaScript, el botón "añadir campo trabajo" debería crearme ésto:


Puesto de Trabajo ____________________
Nombre Trabajador ____________________

__________________________________________________ __________

O sease crear dos campos tipo texto y una separación. Incluso me gustaría que me creara en el primero un campo tipo SELECT y que me dejara escoger el puesto de trabajo.

Después quiero recoger la información que me crea el JavaScript y enviarla a la Base de Datos.

Voy por partes:

primero os pongo el SCRIPT que he intentado hacer de manera chapuza y que en teoría funciona, pero alguien me ha dicho que esta mal hecho y por eso no puedo recoger los datos.


Código Javascript:
Ver original
  1. <script language="JavaScript" type="text/javascript">
  2.  
  3. function elemento_file(x){
  4. var divele=document.getElementById("elementos");
  5.    
  6. if(x==1){
  7.        
  8. if(divele.lastChild){
  9. divele.removeChild(divele.lastChild);
  10. divele.removeChild(divele.lastChild);
  11. divele.removeChild(divele.lastChild);
  12. divele.removeChild(divele.lastChild);
  13. divele.removeChild(divele.lastChild);
  14. divele.removeChild(divele.lastChild);
  15.  
  16.  
  17.     }
  18. }
  19.                            
  20. else {
  21.  
  22. salto=document.createElement("br");
  23. puesto=document.createTextNode("Puesto");
  24. nombre=document.createTextNode("Nombre");
  25. ele=document.createElement("input");
  26. ele2=document.createElement("input");
  27. separacion=document.createElement("hr");
  28. ele.type="text";
  29. ele.name="mielemento[]";
  30. ele2.type="text";
  31. ele.name="mielemento2[]";
  32. divele.appendChild(puesto);                                                    
  33. divele.appendChild(ele);
  34. divele.appendChild(salto);
  35. divele.appendChild(nombre);
  36. divele.appendChild(ele2);
  37. divele.appendChild(separacion);
  38.  
  39.     }
  40. }
  41. </script>

Por otra parte alguien me ayudo a hacer uno en el que agregaras campos FILE y a subirlos a la Base de Datos. es este:

Código Javascript:
Ver original
  1. <script language="JavaScript" type="text/javascript">
  2.  
  3. function elemento_file(x){
  4. var divele=document.getElementById("elementos");
  5.    
  6. if(x==1){
  7.        
  8. if(divele.lastChild){
  9. divele.removeChild(divele.lastChild);
  10. divele.removeChild(divele.lastChild);
  11.     }
  12. }
  13.                            
  14. else {
  15. salto=document.createElement("br");
  16. ele=document.createElement("input");
  17. ele.type="file";
  18. ele.name="mielemento[]";                                                       
  19. divele.appendChild(ele);
  20. divele.appendChild(salto);
  21.     }
  22. }
  23. </script>

Así los recogía:

Código PHP:

if($_FILES["mielemento"]){ 
             
            foreach (
$_FILES["mielemento"]["error"] as $clave => $error) { 
                if (
$error == UPLOAD_ERR_OK) { 
                    
$nombre_tmp $_FILES["mielemento"]["tmp_name"][$clave]; 
                    
$nombre $_FILES["mielemento"]["name"][$clave]; 
                    if(
move_uploaded_file($nombre_tmp"$nombre")) echo "subido: $nombre<br>"
                } 
                 
        }} 

Alguien me puede echar una mano con el JavaScript?

Gracias.
  #2 (permalink)  
Antiguo 30/04/2011, 15:59
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Problema al crear un form con JavaScript

Lo mejor para este tipo de cosas es utilizar un framework javascript
que te facilitará enormemente el trabajo.

Existen muchos, uno de los más conocidos es http://jquery.com/

En esta misma página hay mucha información sobre los métodos para crear
nuevos elementos html de forma muy rapida.

Por ejemplo, existe una función .html() que te permite introducir html al vuelo.
Aquí esta la página que lo explica: http://api.jquery.com/html/

Un ejemplo:

Código Javascript:
Ver original
  1. $(body).html("<form action='pagina.php' method="post"><label for="puesto">Puesto</label><input name="puesto" id="puesto" "type="text" />
  2. </form>");

Con esto reemplazas el contenido del cuerpo por el html escrito.
Si quieres elegir el sitio donde lo introduces puedes utilizar el id de algún elemento.

Por ejemplo, para introducirlo en un elemento con id = "elemento":

Código Javascript:
Ver original
  1. $("#elemento").html("<form action='pagina.php' method='post'><label for='puesto'>Puesto</label><input name='puesto' id='puesto' type='text' />
  2. </form>");

Con #elemento le indicas que te refieres a un id. Es como en los selectores css (en realidad, se basa en estos) e incluso puedes
utilizar selectores más avanzados. Es bastante potente.

El otro error que he visto es que no pones bien el atributo name en los input y por eso no te funciona.

Lo que no entiendo es para que necesitas crear esos formularios con javascript,
a no ser que hagas algo de forma dinámica.

Última edición por alexg88; 30/04/2011 a las 16:11
  #3 (permalink)  
Antiguo 30/04/2011, 16:35
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema al crear un form con JavaScript

Hola:

Particularmente no estoy de acuerdo en usar librerías para cosas sencillas.

Con los formularios hay siempre problemas al querer usar el DOM, ya que no deben permitirse cosillas como cambios de algunos atributos, por eso tal vez una de las mejores soluciones es evitar crear elementos (de formularios) con createElement, porque las asignaciones de atributos name o type puede fallar en algunos navegadores... pero si usases innerHTML creo que no habría problemas...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Etiquetas: formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:37.