Foros del Web » Programando para Internet » Javascript »

Crear nuevo campo en formulario

Estas en el tema de Crear nuevo campo en formulario en el foro de Javascript en Foros del Web. Buenas, estoy haciendo un formulario donde el ultimo campo puede rellenarse una o varias veces, me explico, quiero que si el usuario desea le de ...
  #1 (permalink)  
Antiguo 31/05/2010, 01:34
 
Fecha de Ingreso: octubre-2009
Mensajes: 223
Antigüedad: 14 años, 6 meses
Puntos: 2
Crear nuevo campo en formulario

Buenas, estoy haciendo un formulario donde el ultimo campo puede rellenarse una o varias veces, me explico, quiero que si el usuario desea le de a un link y aparezca otro campo abajo del que se crea por defecto en el formulario para rellenar el que viene de serie mas ese o esos, según los que haya creado, así hasta por ejemplo 5.

Según el código que tengo, se crean los nuevos campos pero luego no se eliminan. También me gustaria saber cuando mando el formulario en que variables puedo recoger esos valores, creo que lo mejor seria un array y lo voy recorriendo en php con un each, pero eso no se como ponerlo en este código. También corregir para borrar el ultimo campo que no se donde tengo el fallo

Código HTML:
Ver original
  1. <tr>
  2. <td>Email principal:</td>
  3. <td><INPUT TYPE="text" NAME="email0"></td>
  4. </tr>
  5. <tr id="emailNode">
  6. <td colspan="2"><CENTER id="mailManagment"><A HREF="javascript:newMail()">Agregar otro mail</A>&nbsp;</CENTER></td>
  7. </tr>
  8.  
  9. <tr>
  10. <td><INPUT TYPE="submit"></td><td><INPUT TYPE="reset"></td>
  11. </tr>

Código Javascript:
Ver original
  1. <SCRIPT LANGUAGE="JavaScript">
  2. var mailcount = 0;
  3. function cerrar(obj){
  4. email=document.getElementById("emailNode"); email.parentNode.removeChild(email.parentNode.childNodes[mailcount+7]);
  5. mailcount --;
  6. if (mailcount==0){
  7. //retirar el código para borrar la última dirección de mail document.getElementById("mailManagment").removeChild(document.getElementById("cerrarMail"));
  8. }
  9. }
  10.  
  11. function newEntry(inputName,text){
  12. newInput = document.createElement("input");
  13. newInput.type="text";
  14. newInput.name=inputName;
  15. newNode = document.createElement("tr");
  16. newNode.appendChild(document.createElement("td"));
  17. newNode.appendChild(document.createElement("td"));
  18. newNode.firstChild.appendChild(document.createTextNode(text));
  19. newNode.lastChild.appendChild(newInput);
  20. return newNode;
  21. }
  22.  
  23. function newMail(){
  24. mailcount ++;
  25. email=document.getElementById("emailNode");
  26. //Creo el nuevo campo
  27. newNode=newEntry("email"+mailcount,"Email alternativo "+mailcount+":");
  28. //Muestro el nuevo campo
  29. email.parentNode.insertBefore(newNode,email);
  30.  
  31. //Agregar el código para borrar el último mail
  32. if (mailcount==1){
  33. newClose = document.createElement("a");
  34. newClose.id="cerrarMail";
  35. newClose.href="javascript:cerrar(this)";
  36. newClose.appendChild(document.createTextNode("Borrar último"));
  37. document.getElementById("mailManagment").appendChild(newClose);
  38. }
  39. }
  40. </SCRIPT>

Última edición por gspablo; 31/05/2010 a las 01:37 Razón: No aparece todo el codigo
  #2 (permalink)  
Antiguo 31/05/2010, 01:38
 
Fecha de Ingreso: octubre-2009
Mensajes: 223
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Crear nuevo campo en formulario

No aparece el código por completo pero al darle a ver codigo si aparece
  #3 (permalink)  
Antiguo 02/06/2010, 01:09
 
Fecha de Ingreso: octubre-2009
Mensajes: 223
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Crear nuevo campo en formulario

Tambien he probado esto pero no se como hacer esto para que salga de la misma forma que la tabla creada, yo creo una linea de tabla y luego 2 celdas, una con el titulo y otra con el campo, con esto solo consigo crear un campo debajo de otro y nada de titulo

Código HTML:
Ver original
  1. <tr>
  2. <td align="center"><p> ATTACHMENT &nbsp;</p></td>
  3. <td> <input name="nattachment[]" id="idattachment" type="text" alt="User" size="100" maxlength="90"/></td>
  4. </tr>
  5.  
  6. <tr>
  7. <td colspan="2" align="center">
  8. <div id="inputText">
  9. <input value="New attachment" onclick="creaCampo2();"  type="button">
  10. </div>
  11. </td>
  12. </tr>
  13.  
  14. <tr>
  15. <td colspan="2"  align="center"> <input name="send" id="idsend" type="submit" alt="Send" value='CREATE' /> </td>
  16. </tr>
Código Javascript:
Ver original
  1. function nuevoCampoForm(type,name,id,value,size){
  2.         var campoForm=document.createElement("input");        
  3.           campoForm.setAttribute("value",value);
  4.             size==undefined?32:size;
  5.             campoForm.setAttribute("type","text");
  6.             campoForm.setAttribute("size",100);
  7.             campoForm.setAttribute("maxlenght",90);
  8.            
  9.     campoForm.setAttribute("name",name);
  10.     campoForm.setAttribute("id",id);
  11.     return campoForm;
  12. }
  13. function creaCampo2(){
  14.     var div2=document.getElementById("inputText");
  15.     var txt=new nuevoCampoForm('text','nattachment[]','idattachment','','32');
  16.     var txt2=new nuevoCampoTd();
  17.      div2.appendChild(txt);
  18.      div2.appendChild(txt2);
  19.  
  20. }
  #4 (permalink)  
Antiguo 02/06/2010, 01:39
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: Crear nuevo campo en formulario

Hola:

Mi manera de añadir campos nuevos en formulario es clonando alguno existente, preferiblemente disabled y oculto, cambiando esas propiedades al insertarlo... hoy he contestado algún tema al respecto, supongo que sabrás buscarlo.

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

Etiquetas: formulario, campos
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 15:54.