Pido disculpas, he cometido el error de no poner el código para mejor explicación del problema.
En html, el formulario (abreviado)
Código HTML:
<form method="post" action="#">
<div class="paunidades">
<label>ACEITE </label><input id="unidadesp1" class="unidades" type="number" size="6" value="0">
<!-- y otros productos-->
</div>
<div class="paboton">
<button type="button" id="calc_palets" name="calc_palets">CALCULAR</button>
</div>
</form>
En el script (también abreviado)
Código:
$(document).ready(function(){
//palets iniciales de Europa, nombre, filas, unidadesxfilas, total unidades, altura caja, resistencia
var p1 = ["aceite", 5, 11, 55, 28.5, 1];
//el resto de los arrays de productos
$('#calc_palets').on('click', function(e){
e.preventDefault();
//++ SE AÑADEN al array PALETS COMP, UNID QUE QUEDAN, FILAS SUELTAS AL ALZA, ALTURA FILAS SUELTAS, unidades asignadas, (si el palet incompleto cabe en la estantería)
anadir_calculos(p1, '#unidadesp1');
}
function anadir_calculos(rp1, id_prod){//anadir es añadir
//coge las unidades del input
var unidades = parseFloat($(id_prod).val());
//añade los posibles palets completos
var palets = parseInt(unidades/rp1[3]);
rp1.push(palets);
//añade las cajas sueltas
var sueltas = unidades%rp1[3];
rp1.push(sueltas);
//añade las filas al alza
var filas = Math.ceil(sueltas/rp1[2]);
rp1.push(filas);
//añade la alturas de las cajas al alza
var alt_sueltas = filas*rp1[4];
rp1.push(alt_sueltas);
//añade las unidades otorgadas, posición 10
rp1.push(unidades);
//pone las filas no al alza, posición 11
rp1.push(parseInt(sueltas/rp1[2]));
//pone las cajas fuera de fila, posicion 12
rp1.push(unidades%rp1[2]);
}
//Y para poner el producto en html, hago esto (también abreviado, he omitido las variables)
$('#nocombi').append("<div class='sobras'><div><p><span>"+todos_prod[i][5]+" - "+todos_prod[i][0]+"</span>. "+fila_sobra+" filas del palet original y "+caja_sobra+" cajas del palet original. Altura: "+todos_prod[i][9]+".</p></div>"+hecho+"</div>");
Espero que así sea más fácil.
He puesto tu sugerencia del preventdefault. Con él lo que ocurre es:
- pongo una cantidad en aceite y le doy a calcular, lo hace bien
- pongo una cantidad en el siguiente producto y le doy a calcular
- repite aceite 2 veces y el otro producto no aparece
- recargo la página en el navegador, le doy a calcular y lo hace bien
Gracias de nuevo.