Ver Mensaje Individual
  #6 (permalink)  
Antiguo 02/05/2021, 03:59
melkart239
 
Fecha de Ingreso: noviembre-2014
Ubicación: Madrid
Mensajes: 81
Antigüedad: 10 años
Puntos: 1
Respuesta: Botón que hace cálculos necesita recargar la página

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.