Autor Tema: Poner consecutivos los id y name en un appendTo con jquery y php  (Leído 3926 veces)

MunsenTidoco

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Hola. Estoy tratando de hacer un formulario para editar, insertar y eliminar notas de venta en un sistema php/mysql y jquery.

La cabecera de la nota está bien, donde tengo problema es en los detalles. Estos están en una tabla donde tengo el row a clonar (en caso de agregar más productos) y en el row primero y/o repetitivo donde se muestran los detalles existentes (en caso de edición).

Nombro cada id y name del row (producto, venta, precio e importe) con un sufijo para identificarlos y hacer las operaciones y quedan así funcion calcular_1,venta_1,funcion calcular_2, venta_2, etc.
Cabe mencionar que el row a clonar tiene sufijos "_0" en sus id y names.
Código: [Seleccionar]
              <?php do { ?>
                <?php $cnt1++; ?>
<script type="text/javascript">
function calcular_<?php echo $cnt1?>() {
v_<?php echo $cnt1?>=0;
p_<?php echo $cnt1?>=0;
i_<?php echo $cnt1?>=0;
    if(document.getElementById('venta_<?php echo $cnt1?>').value>0)
{
v_<?php echo $cnt1?>=document.getElementById('venta_<?php echo $cnt1?>').value;
p_<?php echo $cnt1?>=document.getElementById('precio_<?php echo $cnt1?>').value;
i_<?php echo $cnt1?>=v_<?php echo $cnt1?>*p_<?php echo $cnt1?>;
document.getElementById('importe_<?php echo $cnt1?>').value=i_<?php echo $cnt1?>;
    }
}
</script>
y los imputs vienen así, consecutivos por php
Código: [Seleccionar]
                    <td><input type="text" name="venta_<?php echo $cnt1?>" id="venta_<?php echo $cnt1?>" onBlur="javascript:calcular_<?php echo $cnt1?>()" size="7" />
Hasta aquí todo funciona, las operaciones, la carga de datos, borrado y editado.
Pero si quiero clonar el row, me los clona todos con el mismo número inicial (0). Quedando funcion calcular_0, venta_0, venta_0, etc.

Estoy intentando que me cambie todos los "_0" que trae el row a clonar por el consecutivo. Que queden así "_4", "_5", "_6", etc.
Para eso estoy usando este código al clonarlos, pero no me funciona. Ojalá haya quien me ayude a corregirlo.
Código: [Seleccionar]
<script type="text/javascript">
$(function fixIds(elem, cnt1) {
// Cambio el sufijo de 0 por el siguiente consecutivo cntl
    $(elem).replace("_0", "_" + cnt1);
}
var cloneCnt1 = <?php echo $cnt1?>;
// Clona la fila oculta que tiene los campos base, y la agrega al final de la tabla
$("#agregar").on('click', function(){
var row = $("#tabla tbody tr:eq(0)").clone().removeClass('fila-base');
fixIds(row, cloneCnt1++);
appendTo("#tabla tbody");
});
 
// Evento que selecciona la fila y la elimina
$(document).on("click",".eliminar",function(){
var parent = $(this).parents().parents().get(0);
$(parent).remove();
});
);
</script>

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Poner consecutivos los id y name en un appendTo con jquery y php
« Respuesta #1 en: 29 de Octubre 2016, 13:40 »
Buenas yo iría por pasos.

Primer paso: después de var row = $("#tabla tbody tr:eq(0)").clone().removeClass('fila-base');

Comprobar si row contiene lo que deseas

Segundo paso

Crear una variable por ejemplo: nuevoNumero = cloneCnt1++;

y comprobar si nuevoNumero contiene el número que deseas.

Si es así, ya solo te queda el último paso, que es reemplazar el número que lleva row por el nuevo número.

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".