Multiplicación de Inputs con resultado automático

publicado por: Anonymous

Tengo el siguiente código

_x000D_

_x000D_

function multi(){_x000D_
		var total = 0;_x000D_
_x000D_
		$(".monto").each(function(){_x000D_
			if (isNaN(parseFloat($(this).val()))) {_x000D_
				total += 0;_x000D_
			} else {_x000D_
			  total += parseFloat($(this).val());_x000D_
	  }_x000D_
	});_x000D_
_x000D_
	document.getElementById('Costo').innerHTML = total;_x000D_
}

_x000D_

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>_x000D_
<tr>_x000D_
	<td>_x000D_
    <label>_x000D_
      <input type="text" name="Precio" id="Precio" value="" class="monto" onkeyup="multi();">_x000D_
    </label>_x000D_
  </td>_x000D_
	<td>_x000D_
    <label>_x000D_
      <input type="text" name="Cantidad" id="Cantidad" class="monto" onkeyup="multi();">_x000D_
    </label>_x000D_
  </td>_x000D_
  <td>_x000D_
    <label id="Costo">_x000D_
      <input type="text" name="Costo" disabled>_x000D_
    </label>_x000D_
  </td>_x000D_
</tr>

_x000D_

_x000D_

_x000D_

El script lo que hace es que los inputs con las clase monto los suma y los arroja como resultado en el input de id = Gasto pero este código lo desarrolle no hace poco para una suma en otro proyecto, ahora lo estoy reutilizando para que me pueda hacer un multiplicación. La vdd soy nuevo en esto de ajax y lo poco de que investigue fue lo que logre en este pequeño script.

En si mi pregunta es ¿Que debo mover o poner en el código para que en vez que me sume me multiplique?

Les agradeceria la ayuda 🙂

solución

En teoría cambiando el + por el * debería funcionar pero la variable total la inicializa en cero lo cuál al multiplicar por 0 siempre será 0 el resultado. Debería tener una validación adicional como por ejemplo una bandera para saber si se modifico el valor así retornar 0 por defecto.

_x000D_

_x000D_

function multi(){_x000D_
    var total = 1;_x000D_
    var change= false; //_x000D_
    $(".monto").each(function(){_x000D_
        if (!isNaN(parseFloat($(this).val()))) {_x000D_
            change= true;_x000D_
            total *= parseFloat($(this).val());_x000D_
        }_x000D_
    });_x000D_
    // Si se modifico el valor , retornamos la multiplicación_x000D_
    // caso contrario 0_x000D_
    total = (change)? total:0;_x000D_
    document.getElementById('Costo').innerHTML = total;_x000D_
}

_x000D_

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>_x000D_
<tr>_x000D_
    <td>_x000D_
    <label>_x000D_
      <input type="text" name="Precio" id="Precio" value="" class="monto" onkeyup="multi();">_x000D_
    </label>_x000D_
  </td>_x000D_
    <td>_x000D_
    <label>_x000D_
      <input type="text" name="Cantidad" id="Cantidad" class="monto" onkeyup="multi();">_x000D_
    </label>_x000D_
  </td>_x000D_
  <td>_x000D_
    <label id="Costo">_x000D_
      <input type="text" name="Costo" disabled>_x000D_
    </label>_x000D_
  </td>_x000D_
</tr>

_x000D_

_x000D_

_x000D_

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *