Foros del Web » Programando para Internet » Javascript »

Ayuda formulario

Estas en el tema de Ayuda formulario en el foro de Javascript en Foros del Web. Hola foreros, escribo para ver si me dan una mano con un formulario que estoy armando. Tengo una tabla donde pregunto que carreras corrio un ...
  #1 (permalink)  
Antiguo 24/07/2010, 17:12
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 18 años
Puntos: 0
Ayuda formulario

Hola foreros, escribo para ver si me dan una mano con un formulario que estoy armando. Tengo una tabla donde pregunto que carreras corrio un caballo por año y en que posicion salio. Como de antemano no tengo idea si un caballo corre 1, 5, 10 o 60 carreras lo que quiero hacer es poner un boton para agregar una fila con los input type text para cada carrera. De todo lo que estuve mirando no hay nada que sea como lo que necesito (aviso que en java yÇ/o javascript soy un cero)
Bueno, les pego el codigo de la tabla con el form a ver como se podria hacer.
Mil gracias.
Perdon, la pagina está en PHP y si las variables las mando por get o post me es indistinto.

<form action="grabo.php" method="get" enctype="text/plain">

<table width="100%" border="1">
<tr>
<td>año</td>
<td>carrera</td>
<td>posicion</td>
<td>jockey</td>
</tr>
<tr>
<td><input type="text" name="ano_carrera" /></td>
<td><input type="text" name="nombre_carrera" /></td>
<td><input type="text" name="posicion_carrera" /></td>
<td><input type="text" name="jockey_carrera" /></td>
</tr>
</table>


</form>
  #2 (permalink)  
Antiguo 24/07/2010, 21:43
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Ayuda formulario

ACLARO: java y javascript no es lo mismo

tienes 2 formas de hacerlo:

con php, simplemente colocas un input (agregar x filas) y al enviarlo en php compruebas si se introdujo cierta cantidad, con ella haces un ciclo y generas las filas necesarias con los inputs.

con javascrpt es un poco más complicado, pero implica agregar manualmente cada fila, y cada input mediante DOM

NOTA: los nombres de los campos deben contener como prefijo los corchetes [], para que así php los reconozca como arrays:

Código HTML:
Ver original
  1. <td><input type="text" name="ano_carrera[]" /></td>
  2. <td><input type="text" name="nombre_carrera[]" /></td>
  3. <td><input type="text" name="posicion_carrera[]" /></td>
  4. <td><input type="text" name="jockey_carrera[]" /></td>
  #3 (permalink)  
Antiguo 25/07/2010, 06:54
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 18 años
Puntos: 0
Respuesta: Ayuda formulario

Hola, gracias por las respuesta, me gustaria mas hacerlo con javascript, como encaro el tema del DOM ?
Alguna ayuda?
mil gracias.
  #4 (permalink)  
Antiguo 25/07/2010, 08:16
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Ayuda formulario

Hola

Algo como esto
Código Javascript:
Ver original
  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. function crearCampos(cantidad){
  5. var div = document.getElementById("campos_dinamicos");
  6. while(div.firstChild)div.removeChild(div.firstChild); // remover elementos;
  7.     for(var i = 1, cantidad = Number(cantidad); i <= cantidad; i++){
  8.     var salto = document.createElement("P");
  9.     var input = document.createElement("input");
  10.     var text = document.createTextNode("Campo Dinamico " + i + ": ");
  11.     input.setAttribute("name", "campo[]");
  12.     input.setAttribute("id", "campo" + i);
  13.     input.setAttribute("size", "12");
  14.     input.className = "input";
  15.     salto.appendChild(text);
  16.     salto.appendChild(input);
  17.     div.appendChild(salto);
  18.     }
  19. }
  20. </script>
  21.  
  22. </head>
  23. <body>
  24. <form>
  25. ¿Cuantos Campos? <input type="text" name="cantidad" id="cantidad" value="" onkeyup="crearCampos(this.value);" />
  26. <input type="button" id="boton" value="Crear/Eliminar Campos" onclick="crearCampos(this.form.cantidad.value);" />
  27. <div id="campos_dinamicos"></div>
  28. </form>
  29. </body>
  30. </html>

PD: Aunque sería más sencillo con cloneNode()

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Última edición por Adler; 25/07/2010 a las 08:24 Razón: algo de info
  #5 (permalink)  
Antiguo 25/07/2010, 11:57
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 18 años
Puntos: 0
Respuesta: Ayuda formulario

Hola, lo que pasa es que no se si la gente que carga esto va a tener claro cuantas carreras de antemano; no hay forma de poner un boton "agregar otra carrera" y que se vaya agregando de a una?
Es simil a las experiencias laborales de las paginas de busqueda de empleo.
Mil gracias.
  #6 (permalink)  
Antiguo 25/07/2010, 12:35
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Ayuda formulario

Código Javascript:
Ver original
  1. var numero = 1;
  2. var donde = document.getElementById('donde');
  3. function crear(){
  4.  var input = document.createElement('input');
  5.  input.type = 'text'
  6.  input.setAttribute('id', numero);
  7.  input.setAttribute('name', 'carrera'+numero+'[]');
  8.  donde.appendChild(input);
  9.  numero++;
  10. }
Código HTML:
Ver original
  1. <div id='donde'></div>
  2. <input type='button' onclick='crear();' value='Nueva carrera' />

¿Algo como esto?
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #7 (permalink)  
Antiguo 25/07/2010, 13:38
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Ayuda formulario

Hola

Veamos que te parece este otro usando cloneNode()
Código Javascript:
Ver original
  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. function addFilaATabla() {
  5. var tbl = document.getElementById('Tabla');
  6. var rows = tbl.getElementsByTagName('tr');
  7. var len = rows.length;
  8. var lastRow = rows[len-1];
  9. var clone = lastRow.cloneNode(true);
  10.  
  11. clone.getElementsByTagName('input')[0] = lastRow.getElementsByTagName('input')[0];
  12. clone.getElementsByTagName('input')[1] = lastRow.getElementsByTagName('input')[1];
  13. clone.getElementsByTagName('input')[2] = lastRow.getElementsByTagName('input')[2];
  14. clone.getElementsByTagName('input')[3] = lastRow.getElementsByTagName('input')[3];
  15.  
  16. clone.getElementsByTagName('input')[0].name = 'ano_carrera[]';
  17. clone.getElementsByTagName('input')[1].name = 'nombre_carrera[]';
  18. clone.getElementsByTagName('input')[2].name = 'posicion_carrera[]';
  19. clone.getElementsByTagName('input')[3].name = 'jockey_carrera[]';
  20.  
  21. tbl.appendChild(clone);
  22. }
  23.  
  24.  
  25. function quitaFilaATabla() {
  26. var tbl = document.getElementById('Tabla');
  27. var lastRow = tbl.rows.length;
  28. if (lastRow > 2) tbl.deleteRow(lastRow - 1);
  29. }
  30. </script>
  31. </head>
  32. <body>
  33. <form>
  34. <table id="Tabla" width="100%" border="1">
  35. <tr>
  36. <td>año</td>
  37. <td>carrera</td>
  38. <td>posicion</td>
  39. <td>jockey</td>
  40. </tr>
  41. <tr>
  42. <td><input type="text" name="ano_carrera[]" /></td>
  43. <td><input type="text" name="nombre_carrera[]" /></td>
  44. <td><input type="text" name="posicion_carrera[]" /></td>
  45. <td><input type="text" name="jockey_carrera[]" /></td>
  46. </tr>
  47. </table>
  48. <br />
  49. <input type="button" value="Añadir otra" onclick="addFilaATabla();" />
  50. <input type="button" value="Eliminar última" onclick="quitaFilaATabla();" />
  51. <br />
  52. <input type="submit" value="enviar" />
  53. </form>
  54. </body>
  55. </html>
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 25/07/2010, 20:16
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 18 años
Puntos: 0
Respuesta: Ayuda formulario

Buenisimo, por ahi viene la cosa, tengo una pregunta mas, solo de quisquilloso.
cuando agrego la fila, me repite los datos de la fila anterior, hay forma d eevitar eso?
millon de gracias igual.
  #9 (permalink)  
Antiguo 26/07/2010, 05:22
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Ayuda formulario

Hola

Eso ocurre por que al usar cloneNode, se clona el campo. Si a ese campo se le ha dado un valor, este también es clonado

Prueba con este otro
Código Javascript:
Ver original
  1. <html>
  2. <head>
  3. <title>Crear filas</title>
  4. <script type="text/javascript">
  5. var indiceFila = 0;
  6. function NuevaFila() {
  7. myNewRow = document.getElementById("Tabla").insertRow(-1);
  8.  
  9.         myNewCell=myNewRow.insertCell(-1);
  10.         var elemento = document.createElement("INPUT");
  11.         elemento.setAttribute("type","text");
  12.         elemento.setAttribute("size","8");
  13.         elemento.setAttribute("maxlength","15");
  14.         elemento.setAttribute("name","codigo[]");
  15.         elemento.setAttribute("id","codigo_" + indiceFila);
  16.         myNewCell.appendChild(elemento);
  17.  
  18.         myNewCell=myNewRow.insertCell(-1);
  19.         var elemento2 = document.createElement("INPUT");
  20.         elemento2.setAttribute("type","text");
  21.         elemento2.setAttribute("size","25");
  22.         elemento2.setAttribute("maxlength","40");
  23.         elemento2.setAttribute("name","nombre[]");
  24.         elemento2.setAttribute("id","nombre_" + indiceFila);
  25.         myNewCell.appendChild(elemento2);
  26.  
  27.         myNewCell=myNewRow.insertCell(-1);
  28.         var elemento3 = document.createElement("INPUT");
  29.         elemento3.setAttribute("type","text");
  30.         elemento3.setAttribute("size","10");
  31.         elemento3.setAttribute("maxlength","20");
  32.         elemento3.setAttribute("name","unidad[]");
  33.         elemento3.setAttribute("id","unidad_" + indiceFila);
  34.         myNewCell.appendChild(elemento3);
  35.  
  36.         myNewCell=myNewRow.insertCell(-1);
  37.         var elemento4 = document.createElement("INPUT");
  38.         elemento4.setAttribute("type","text");
  39.         elemento4.setAttribute("size","10");
  40.         elemento4.setAttribute("maxlength","20");
  41.         elemento4.setAttribute("name","cantidad[]");
  42.         elemento4.setAttribute("id","cantidad_" + indiceFila);
  43.         myNewCell.appendChild(elemento4);
  44.  
  45. indiceFila++;
  46. }  
  47.  
  48.  
  49. function quitaFilaATabla() {
  50. var tbl = document.getElementById('Tabla');
  51. var lastRow = tbl.rows.length;
  52. if (lastRow > 2) tbl.deleteRow(lastRow - 1);
  53. }
  54. </script>
  55. </head>
  56. <body>
  57. <a href="javascript:void(0);" onClick="NuevaFila()">Adicionar Fila</a> || <a href="javascript:void(0);" onClick="quitaFilaATabla()">Eliminar Fila</a>
  58. <br />
  59. <form>
  60. <table border="1px" id="Tabla">
  61. <tr>
  62. <td>CÓDIGO</td><td>NOMBRE</td><td>UNIDAD</td><td>CANTIDAD</td>
  63. </tr>
  64. <tr>
  65. <td><input type="text" size="8" maxlength="15" name="codigo[]" id="codigo_0" /></td>
  66. <td><input type="text" size="25" maxlength="40" name="nombre[]" id="nombre_0" /></td>
  67. <td><input type="text" size="10" maxlength="20" name="unidad[]" id="unidad_0" /></td>
  68. <td><input type="text" size="10" maxlength="20" name="cantidad[]" id="cantidad_0" /></td>
  69. </tr>
  70. </table>
  71. <br />
  72. <input type="submit" value="enviar" />
  73. </form>
  74. </body>
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #10 (permalink)  
Antiguo 26/07/2010, 15:42
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 18 años
Puntos: 0
Respuesta: Ayuda formulario

Exactamente eso es lo que necesito.
Millon de gracias!!!!!!!

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 22:01.