Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] adicionar una variable rowCount dentro del name e id

Estas en el tema de adicionar una variable rowCount dentro del name e id en el foro de Javascript en Foros del Web. Buenas gente tengo un problema... talvez sea sencillo pero yo no tengo muchos conocimientos de javascript... aqui les pongo el link de lo que tengo... ...
  #1 (permalink)  
Antiguo 03/12/2015, 18:49
 
Fecha de Ingreso: noviembre-2015
Mensajes: 13
Antigüedad: 8 años, 5 meses
Puntos: 0
adicionar una variable rowCount dentro del name e id

Buenas gente tengo un problema... talvez sea sencillo pero yo no tengo muchos conocimientos de javascript...
aqui les pongo el link de lo que tengo... lo encontre x ahi tanto buscar...

http://jsfiddle.net/QLQRT/

el codigo funciona perfecto...
el problema es que los ids que se generan no son exactamento lo que quiero...

lo que yo quiero es adicionar el contador que esta a la izquierda a los names e ids... el cual si se dan cuenta... si se desea eliminar una fila del medio pues el contador se resetea y enumera las filas de nuevo...

y esa enumeracion la quiero colocar dentro de los names e ids generados..
de manera que todo quede en orden...
osea:

1 fila name="name1" id="id1"
2 fila name="name2" id="id2"
3 fila name="name3" id="id3"

y asi sucesivamente...

para que en caso de que elimine una fila del medio pues quede

1 fila name="name1" id="id1"
2 fila name="name2" id="id2"

no quiero que quede asi:

1 fila name="name1" id="id1"
2 fila name="name3" id="id3"

si vieron el codigo funcionando veran que el contador se enumera correctamente...
el problema es en los names e ids...
trate de explicarme lo mejor que pude...
espero me puedan ayudar...
se agradece cualquier ayuda que me den... gracias...
  #2 (permalink)  
Antiguo 03/12/2015, 20:29
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 11 años
Puntos: 10
Respuesta: adicionar una variable rowCount dentro del name e id

Hola,
seguro habrán soluciones mejores pero lo que se me ocurre a la primera vista seria algo asi:

1. añadir una clase a todas las filas ejemplo class="filas"

Código Javascript:
Ver original
  1. //reemplazar
  2. var $tr = $(table).find("tbody tr:last").clone();
  3.  
  4. //por
  5. var $tr = $(table).find("tbody tr:last").clone();
  6. $tr.addClass('filas');

2. crear una funcion para reescribir los names e id-s despues de pulsar remove

Código Javascript:
Ver original
  1. funcion reescribir(){
  2.     $.each($('.filas'),function(index){
  3.         $(this).prop({
  4.             id:'id'+index,
  5.             name:'name'+index
  6.         });
  7.     });
  8. }

3. llamar a la funcion reescribir después de borrar una fila

Código Javascript:
Ver original
  1. //cambiar
  2. $(this).remove();
  3.  
  4. //por
  5. $(this).remove();
  6. reescribir();

Tenga en cuenta que no he probado lo que he puesto pero en principio debería funcionar

Espero que te sirva al menos como ideea
  #3 (permalink)  
Antiguo 03/12/2015, 21:11
 
Fecha de Ingreso: noviembre-2015
Mensajes: 13
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: adicionar una variable rowCount dentro del name e id

Hola matake... mas o menos entendi lo que tratas de hacer...
Intenté aplicarlo pero no me funciono...

Seria de mucha ayuda si me ayudas con esto...
Llevo muchos dias buscando información...
Y pues necesito avanzar con este proyecto de la universidad...

Y como te dije... no se bien programar en javascript...
Solo entiendo lo básico...
  #4 (permalink)  
Antiguo 03/12/2015, 22:25
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 11 años
Puntos: 10
Respuesta: adicionar una variable rowCount dentro del name e id

Pues seria esto:

Código Javascript:
Ver original
  1. $(document).ready(function ($) {
  2.     // trigger event when button is clicked
  3.     $("button.add").click(function () {
  4.         // add new row to table using addTableRow function
  5.         addTableRow($("table"));
  6.         // prevent button redirecting to new page
  7.         return false;
  8.  
  9.     });
  10.  
  11.     function cambiar_nombre_id(){
  12.    
  13.         //he puesto 300 milisegundos de retraso para estar seguro que la nueva fila esta en el DOM
  14.         setTimeout(function(){
  15.             //cuento todas las filas
  16.             $.each($(table).find("tbody tr"),function(index){
  17.                
  18.            
  19.                 // get the name attribute for the input and select fields
  20.                 $(this).find("input,select").attr("name", function () {
  21.                     // break the field name and it's number into two parts
  22.                     var parts = this.id.match(/(\D+)(\d+)$/);
  23.                     // create a unique name for the new field by incrementing
  24.                     // the number for the previous field by 1
  25.                    
  26.                     //aqui solo empleo la primera parte que es el nombre
  27.                     //en vez de la segunda parte he puesto el index actual incrementando una unidad ya que empieza por 0
  28.                     return parts[1] + (index+1);
  29.                    
  30.                     // repeat for id attributes
  31.                 }).attr("id", function () {
  32.                     var parts = this.id.match(/(\D+)(\d+)$/);
  33.                     return parts[1] +  (index+1);
  34.                 });
  35.             });
  36.         },300);
  37.     }
  38.     // function to add a new row to a table by cloning the last row and
  39.     // incrementing the name and id values by 1 to make them unique
  40.     function addTableRow(table) {
  41.        
  42.         // clone the last row in the table
  43.         var $tr = $(table).find("tbody tr:last").clone();
  44.        
  45.         //llamo a la funcion para cambiar nombres e id-s despues de añadir nueva fila
  46.         cambiar_nombre_id();
  47.  
  48.  
  49.         // append the new row to the table
  50.         $(table).find("tbody tr:last").after($tr);
  51.         $tr.hide().fadeIn('slow');
  52.  
  53.         // row count
  54.         rowCount = 0;
  55.         $("#table tr td:first-child").text(function () {
  56.             return ++rowCount;
  57.         });
  58.  
  59.         // remove rows
  60.         $(".remove_button").on("click", function () {
  61.             if ( $('#table tbody tr').length == 1) return;
  62.             $(this).parents("tr").fadeOut('slow', function () {
  63.                 $(this).remove();
  64.                 //llamo a la funcion para cambiar nombres e id-s despues de borrar una fila
  65.                 cambiar_nombre_id();
  66.                 rowCount = 0;
  67.                 $("#table tr td:first-child").text(function () {
  68.                     return ++rowCount;
  69.                 });
  70.             });
  71.         });
  72.  
  73.     };
  74. });

Ahora ya esta probado ... como ya he dicho ... es algo rudimentario ... seguro habran formas mas elegantes de hacerlo pero funciona.
  #5 (permalink)  
Antiguo 06/12/2015, 14:07
 
Fecha de Ingreso: noviembre-2015
Mensajes: 13
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: adicionar una variable rowCount dentro del name e id

Muchas gracias hermano... funciona perfectamente...
Ya podre seguir con mi proyecto... esto me estaba estancando x mucho tiempo...
Quedo muy agradecido...

Etiquetas: funcion, js, variable
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:53.