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.
<?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
<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.
<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>