Foros del Web » Programando para Internet » Javascript »

Agregar textbox y combobox dinamicamente

Estas en el tema de Agregar textbox y combobox dinamicamente en el foro de Javascript en Foros del Web. Hola, buenos dias, tengo un formulario para dar de alta un pedido, el cual tiene su cabecera, y debajo del mismo un boton "Cargar productos" ...
  #1 (permalink)  
Antiguo 07/11/2014, 08:53
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años, 1 mes
Puntos: 1
Agregar textbox y combobox dinamicamente

Hola, buenos dias, tengo un formulario para dar de alta un pedido, el cual tiene su cabecera, y debajo del mismo un boton "Cargar productos" que al darle clic, aparezcan n registros, uno con cada clic, y cada registro compuesto por un combobox con datos extraidos de la base de datos y dos campos de texto, luego de que cargue la cantidad de productos que necesita lo debe guardar en la base de datos.

Como puedo lograrlo??

Solo tengo un poco de conocimiento de php...

Desde ya muchas gracias a todos!
  #2 (permalink)  
Antiguo 07/11/2014, 09:01
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 11 meses
Puntos: 1012
Respuesta: Agregar textbox y combobox dinamicamente

el nombre de esos controles han de ser un array
Cita:
<input type="text" name="t[]" />
<input type="text" name="t[]" />
para recogerlos

Cita:
$_REQUEST["t"]
si sabes que la consulta trata de php, por qué la publicas en el foro de javascript??
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 07/11/2014, 09:07
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 7 meses
Puntos: 12
Respuesta: Agregar textbox y combobox dinamicamente

Hola axelb, te paso el código.

HTML

Código HTML:
Ver original
  1. <form id="formestrucfile" name="formestrucfile" action="" method="post">
  2.                             <input type="hidden" name="crearestructfile" value="si" />
  3.                             <input type="hidden" name="id" value="<?php print $_GET["id"]; ?>" />
  4.                             <input type="hidden" id="colfija" value="<?php print $colfija; ?>" />
  5.                             <input type="hidden" id="estructura" value="<?php print $estructura ?>" />
  6.                             <input type="hidden" id="cargafecha" value="<?php print $cargafecha; ?>" />
  7.                             <input type="hidden" id="cargalogal" value="<?php print $cargalocal; ?>" />
  8.                             <input type="hidden" id="noreportalocal" value="<?php print $noreportalocal; ?>" />
  9.                             <table id="tabla" class="table">
  10.                                 <tbody>
  11.                                     <tr style="font-size: 12px;">
  12.                                         <th style="background-color: #ddd;">Nro Col &nbsp;
  13.                                             <img style="cursor:pointer;" title="Agregar columna" id="plus" src="<?php print Conectar::Url(); ?>img/icon/b_plus.png" /> &nbsp;
  14.                                             <img style="cursor:pointer;" title="Quitar columna" id="minus" src="<?php print Conectar::Url(); ?>img/icon/b_minus.png" />
  15.                                         </th>
  16.                                         <th>Header</th>
  17.                                         <th>Tipo dato</th>
  18.                                         <th>Factor de ajuste</th>
  19.                                         <th>Separador decimal</th>
  20.                                         <th>Corte decimal</th>
  21.                                         <th>Longitud</th>
  22.                                     </tr>
  23.                                     <?php for($i=1; $i < 5; $i++) { ?>
  24.                                         <tr>
  25.                                             <td class="id" style="background-color: #ddd;" >Col <?php print $i; ?></td>
  26.                                             <td>
  27.                                                 <input class="header" type='text' id="header" name="header[]" style="text-transform: uppercase;" />
  28.                                             </td>
  29.                                             <td>
  30.                                                 <select id="<?php print $i; ?>" name="tipodato[]" class="tipodato" style="height: 25px;" onchange="ChangeCombo();">
  31.                                                     <?php $e->ComboTipoDatos(); ?>
  32.                                                 </select>
  33.                                             </td>
  34.                                             <td>
  35.                                                 <input type='text' id="factor" name="factor[]" size="4" class="desabilitar" />
  36.                                             </td>
  37.                                             <td>
  38.                                                 <select id="separador" name="separador[]" style="height: 25px;" class="desabilitar">
  39.                                                     <option value="0">NO APLICA</option>
  40.                                                     <option value="1">. [PUNTO]</option>
  41.                                                     <option value="2">, [COMA]</option>
  42.                                                 </select>
  43.                                             </td>
  44.                                             <td>
  45.                                                 <input type='text' id="cortedec" name="cortedec[]" size="4" class="desabilitarcorte"  />
  46.                                             </td>
  47.                                             <td>
  48.                                                 <input type='text' id="longitud" name="longitud[]" size="4" class="desabilitarlonfija"  />
  49.                                             </td>
  50.                                         </tr>
  51.                                     <?php } ?>
  52.                                 </tbody>
  53.                             </table>
  54.                         </form>
  55. <p class="clear"><button id="btncrearestructura" style="cursor: pointer;"><img alt="" src="<?php echo Conectar::Url(); ?>img/icon/b_save.png" /> Crear estructura de archivo</button></p>


JQUERY
Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.  
  3.     $("#plus").click(function() {
  4.         // Obtenemos el total de las columnas
  5.         //var tds=$("#tabla td").length;
  6.  
  7.         // Obtenemos el total de las filas
  8.         var trs=$("#tabla tr").length - 1;
  9.        
  10.         if(trs <= 24) {
  11.             // clonacion de filas en la tabla
  12.             $("#tabla tbody tr:eq("+trs+")").clone().appendTo("#tabla tbody").find('.desabilitar').attr('disabled','disabled');
  13.  
  14.            
  15.             var trs=$("#tabla tr").length - 1;
  16.             $("#tabla .id:last").html('Col '+ trs);
  17.             $("#tabla .header:last").val('');
  18.             $('#tabla .desabilitarlonfija:last').val('');
  19.            
  20.         }else {
  21.             alert("No puede agregar mas de 25 filas.");
  22.         }
  23.     });
  24.        
  25.     /**
  26.      * Funcion para eliminar la ultima columna de la tabla.
  27.      * Si unicamente queda una columna, esta no sera eliminada
  28.      */
  29.     $("#minus").click(function(){
  30.         // Obtenemos el total de columnas (tr) del id "tabla"
  31.         var trs = $("#tabla tr").length;
  32.         // Debe quedar como minimo la fila header table mas una fila
  33.         if(trs > 2)
  34.         {
  35.             // Eliminamos la ultima columna
  36.             $("#tabla tr:last").remove();
  37.         }else {
  38.             alert("Debe contener por lo menos 1 fila.");
  39.         }
  40.     });
  41.  
  42. });


Espero te sirva.

Saludos.
__________________
http://www.sp-vision.net
  #4 (permalink)  
Antiguo 08/11/2014, 10:36
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Agregar textbox y combobox dinamicamente

hola, gracias IsaBelM, pero me parece que no has entendio el problema!

mauritosuarez. eh intentado probar el codigo que me has dado, pero no logro hacerlo funcionar! cual es la relacion, la conexion entre un archivo y el otro?? cual es la extension que debenen tener los archivos?? muchas gracias desde ya!!!! espero que puedas seguir ayudandome!!!!
  #5 (permalink)  
Antiguo 09/11/2014, 08:41
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 11 meses
Puntos: 1012
Respuesta: Agregar textbox y combobox dinamicamente

Cita:
Iniciado por axelb Ver Mensaje
Hola, buenos dias, tengo un formulario para dar de alta un pedido, el cual tiene su cabecera, y debajo del mismo un boton "Cargar productos" que al darle clic, aparezcan n registros, uno con cada clic, y cada registro compuesto por un combobox con datos extraidos de la base de datos y dos campos de texto, luego de que cargue la cantidad de productos que necesita lo debe guardar en la base de datos.

Como puedo lograrlo??
es difícil entenderte tal y como te expresas. mas entendible
Cita:
tengo un formulario para dar de alta un pedido, el cual tiene su cabecera, y debajo del mismo un boton "Cargar productos". necesito que al darle clic aparezcan n registros, uno con cada clic,
usa el método cloneNode()
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #6 (permalink)  
Antiguo 10/11/2014, 05:45
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Agregar textbox y combobox dinamicamente

si es cierto, disculpa! en el apuro termine haciéndolo mas complicado!

Tendrías algún ejemplo de como implementarlo?? como dije ante, solo manejo un poco de php, y la verdad que no se de que trata esto...

Muchas gracias
  #7 (permalink)  
Antiguo 10/11/2014, 08:56
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 11 meses
Puntos: 1012
Respuesta: Agregar textbox y combobox dinamicamente

puede ser algo así
Cita:
window.addEventListener('load', function() {

document.getElementById('clonar').addEventListener ('click', function() {

var txt = document.getElementById('f').elements[0].cloneNode(false);
var com = document.getElementById('f').elements[1].cloneNode(false);

var fragListado = document.createDocumentFragment();

fragListado.appendChild(txt);
fragListado.appendChild(com);

document.getElementById('f').appendChild(fragLista do);

}, false);

}, false);



<form id="f">
<input type="text" name="t[]" value="" />
<select name="s[]">
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
</select>
</form>

<span id="clonar">clonar</span>
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #8 (permalink)  
Antiguo 10/11/2014, 11:51
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Agregar textbox y combobox dinamicamente

con mi poco conocimiento, puedo imaginar que esto es javascript

Cita:
Iniciado por IsaBelM Ver Mensaje
window.addEventListener('load', function() {

document.getElementById('clonar').addEventListener ('click', function() {

var txt = document.getElementById('f').elements[0].cloneNode(false);
var com = document.getElementById('f').elements[1].cloneNode(false);

var fragListado = document.createDocumentFragment();

fragListado.appendChild(txt);
fragListado.appendChild(com);

document.getElementById('f').appendChild(fragLista do);

}, false);

}, false);
pero al ponerlo en un archivo html, me da error en la siguiente linea:

Cita:
document.getElementById('f').appendChild(fragLista do);
que es lo que he hecho mal?
  #9 (permalink)  
Antiguo 10/11/2014, 14:07
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 11 meses
Puntos: 1012
Respuesta: Agregar textbox y combobox dinamicamente

no has hecho nada mal. es sólo mi mala costumbre de no usar los highlight cuando publico código. prueba ahora
Código Javascript:
Ver original
  1. document.getElementById('f').appendChild(fragListado);
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #10 (permalink)  
Antiguo 10/11/2014, 18:56
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Agregar textbox y combobox dinamicamente

bueno, ahora funcionó! estoy con poco tiempo, asi que no pude analizar el código todavia, pero tengo una ultima pregunta, como haga para guardar esos "n" datos??

se hacerlo cuando se la cantidad de datos que se van a guardar, pero ahora no voy a saber como!

Muchísimas gracias IsaBelM!! Me está sirviendo mucho tu ayuda!!
  #11 (permalink)  
Antiguo 11/11/2014, 04:10
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 11 meses
Puntos: 1012
Respuesta: Agregar textbox y combobox dinamicamente

ya está respondido
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #12 (permalink)  
Antiguo 11/11/2014, 06:07
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Agregar textbox y combobox dinamicamente

muy cierto! gracias!!!! en estos dias con un poco mas de tiempo me pongo a estudiar esto!!! Muy agradecido! d verdad! gracias por la paciencia y por la ayuda!! saludos
  #13 (permalink)  
Antiguo 11/11/2014, 12:37
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Agregar textbox y combobox dinamicamente

IsaBelM, he notado que al duplicar, los combobox aparecen vacios! a que se debe esto?

Otra cuestión, no logro hacer que los duplicados aparezcan uno debajo del otro! :o
He intentado con los <br>, tablas y hasta probe con <hr> para lograr algo parecido!

Me siento mal por no lograr mi cometido por mi mismo!
  #14 (permalink)  
Antiguo 11/11/2014, 13:59
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 11 meses
Puntos: 1012
Respuesta: Agregar textbox y combobox dinamicamente

cambia el false por true
Cita:
document.getElementById('f').elements[1].cloneNode(true);
puedes crear un salto de línea. todo dependerá del layout que tengas
Cita:
var salto = document.createElement('br');

var fragListado = document.createDocumentFragment();

fragListado.appendChild(salto);
fragListado.appendChild(txt);
fragListado.appendChild(com);
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #15 (permalink)  
Antiguo 13/11/2014, 07:35
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Agregar textbox y combobox dinamicamente

nuevamente muchas gracias IsaBelM! por lo pronto pude ponerlo como quería, pero no tuve el tiempo necesario para probar el funcionamiento, de todas formas confío en que no va a haber problemas!! Una vez mas, GRACIAS!

Etiquetas: php
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 19:45.