Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Calculo por Seleccion de Checkbox (No dinámico/No estático)

Estas en el tema de Calculo por Seleccion de Checkbox (No dinámico/No estático) en el foro de Javascript en Foros del Web. Hola Chicos!! Después de resolver el tema de las fechas me presento con otro problema que considero que es más de lógica que otra cosa... ...
  #1 (permalink)  
Antiguo 22/10/2014, 14:31
 
Fecha de Ingreso: diciembre-2010
Ubicación: Asunción
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 1
Calculo por Seleccion de Checkbox (No dinámico/No estático)

Hola Chicos!!

Después de resolver el tema de las fechas me presento con otro problema que considero que es más de lógica que otra cosa...

Les comento tengo y que deseo... Informo que si bien hay cosas que son de PHP, mi solución va en JQuery o Javascript más que nada...

Yo creo una pagina desde Un par de consultas de PHP, y realizo una tabla armada desde los registros de una tabla MySQL...

En general armo la tabla con un While y poniendo a cada elemento un valor de ID. Les paso el codigo PHP, pero por favor no me pasen a PHP, porque la solución no está en PHP, sino en JS.

Código PHP:
$i = 0; //A modo de nomenclatura 
while($row_dat = mssql_fetch_assoc($que_dat)) { 
$i++;    
?>
<tr align="center">
  <td><input type="checkbox" id="linea<?=$i?>" onclick="sumarCapital()" /></td>
  <td><input type="text" id="cuota_lin<?=$i?>" value="<?=$row_dat['Id_Cuota']?>" size="2" disabled="disabled" /></td>
  <td><input type="text" id="stock_lin<?=$i?>" value="<?=$row_dat["Stock"]?>" size="6" disabled="disabled" /></td>
  <td><input type="text" id="vcto_lin<?=$i?>" value="<?=$row_dat["Fecha_Vto"]?>" size="10" disabled="disabled" /></td>
  <td><input type="text" id="hoy_lin<?=$i?>" value="<?=date("d/m/Y")?>" size="10" disabled="disabled" /></td>
<td>
<input type="text" id="diasdif_lin<?=$i?>" value="<?=$dias_dif?>" size="4" disabled="disabled" /> días    
</td>
<td>
<input type="text" class="monto_cuota_lin<?=$i?>" value="<?=$monto_cuota?>" size="10" disabled="disabled" />
</td>
<td><input type="text" id="monto_int_lin<?=$i?>" value="<?=$monto_int?>" size="6" disabled="disabled" /></td>
<td><input type="text" id="pago_lin<?=$i?>" value="<?=$monto_pago?>" size="10" disabled="disabled" /></td>
</tr>
<?php    
    
//Cierra el While de los pendientes        
?>                
</table>
Omití alguna líneas de código en PHP para no hacer extenso el código. Lo cierto es que las líneas de la tabla pueden ser 3, 10 o 1000. La idea que quiero es poder hacer una especie de calculador que en efectos prácticos hara dos operaciones: sumar según selecciones los checkbox de cada línea.

Supongamos que tengo 2 lineas
[ ] 1 | SDERF | 22/05/2014 | 22/10/2014 | 150 días | 1,000.00 | 30.00 | 1,030.00
[ ] 2 | SDERF | 22/06/2014 | 22/10/2014 | 120 días | 1,000.00 | 30.00 | 1,030.00

La idea es que cuando seleccione el Checkbox de la linea 1 el automáticamente coja el valor 1000 y lo presente en una <input type="text" /> y si escojo el 2 sume ambos valores que corresponderían a los id=monto_cuota_lin<?=$i?>. Ahora bien yo ha visto un código que puede servir, trate de implementarlo, pero me quedo ciego pues suma de todo un valor:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function calcular_total() {
  3.     importe_total = 0
  4.     $(".importe_linea").each(
  5.         function(index, value) {
  6.             importe_total = importe_total + eval($(this).val());
  7.         }
  8.     );
  9.     $("#total").val(importe_total);
  10. }
  11.  
  12. function nueva_linea() {
  13.     $("#lineas").append('<input type="text" class="importe_linea" value="0"/><br/>');
  14. }
  15. </script>

Este ejemplo responde a la creación dinámicas de input donde los valores son puestos a mano. Pensé que podría adaptarlo, pero mi problema está en que mi class=importe_linea no es fijo, entonces pensé que a través del valor true del checkbox se pueda hacer. Sin embargo mi nivel de experiencia con javascript no me da donde puedo jugar con estos valores.

Alguna mano al respecto?? Gracias.
  #2 (permalink)  
Antiguo 22/10/2014, 15:41
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Calculo por Seleccion de Checkbox (No dinámico/No estático)

No es necesario que concatenes el valor de $i al nombre de la clase, pues esta sí puede repetirse, lo que no puede suceder con el id.

Por otro lado, para hacer lo que buscas, puedes intentarlo de esta manera:

Cada checkbox:
Código HTML:
Ver original
  1. <input type = "checkbox" onclick = "sumar()" />

Código Javascript:
Ver original
  1. function sumar(){
  2.     var checks = document.querySelectorAll(":checked"),
  3.         total = checks.length,
  4.         suma = 0;
  5.     for (var i = 0; i < total; i++){
  6.         var celda = checks[i].parentNode,
  7.             fila = celda.parentNode,
  8.             monto = fila.querySelector(".monto_cuota_lin").innerHTML;
  9.         monto = Number(monto.replace(",", ""));
  10.         suma += monto;
  11.     }
  12.     alert(suma);
  13. }

El proceso es simple. Tomo a los checkbox marcados y calculo el total que estos representan, además, declaro una variable que acumulará el resultado de la suma de los valores. Con ayuda de un bucle, recorro al conjunto de checkbox marcados y, en cada iteración, tomo primero a la celda que lo contiene, luego a la fila que contiene a la celda y en dicha fila, busco a la que tenga por clase "monto_cuota_lin" y tomo el valor que contenga. Luego, como el valor contiene una coma, la retiro y ya que el método replace devuelve una cadena y no podemos sumar cadenas, tomo el valor numérico de la misma haciendo uso del objeto Number. Enseguida, sumo a la variable acumuladora el valor de la celda y repito el proceso hasta terminar con el resto de filas.

Finalmente, muestro la suma en un mensaje de alerta, aunque puedes mostrarlo en algún elemento HTML o en consola, ya decides tú.

DEMO

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 23/10/2014, 06:04
 
Fecha de Ingreso: diciembre-2010
Ubicación: Asunción
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: Calculo por Seleccion de Checkbox (No dinámico/No estático)

Cita:
Iniciado por Alexis88 Ver Mensaje
No es necesario que concatenes el valor de $i al nombre de la clase, pues esta sí puede repetirse, lo que no puede suceder con el id.
En realidad lo hice para tener control de los elementos del formulario, solo por cuestión de usar los mismos en otro PHP que hace otra función... Claro que a la clase no le puse el id...

Cita:
Iniciado por Alexis88 Ver Mensaje
Cada checkbox:
Código HTML:
Ver original
  1. <input type = "checkbox" onclick = "sumar()" />

Código Javascript:
Ver original
  1. function sumar(){
  2.     var checks = document.querySelectorAll(":checked"),
  3.         total = checks.length,
  4.         suma = 0;
  5.     for (var i = 0; i < total; i++){
  6.         var celda = checks[i].parentNode,
  7.             fila = celda.parentNode,
  8.             monto = fila.querySelector(".monto_cuota_lin").innerHTML;
  9.         monto = Number(monto.replace(",", ""));
  10.         suma += monto;
  11.     }
  12.     alert(suma);
  13. }
Muy buena tu explicación y la demo funciona de maravillas. La única diferencia es que yo tenia los elementos dentro de input en un formulario y tu directamente como texto. Para ese caso replique lo que me muestras, saque mi input y le asigné la clase al <td>. El script de javascript lo pase al final de la página tal cual está tu ejemplo, pero aún así no hace nada. Con un debug muy sencillo que tengo sobre mi Mozilla me muestra el siguiente error.

Código:
TypeError: fila.querySelector(...) is null
Y claro no me muestra el alert(suma);
Intenté con esto también
document.getElementById("total_cuota").value=suma;
Y nada... me fije que tu pagina hace referencias a elementos externos, los puse y nada tampoco. Eliminé de hecho todos los elementos javascript que apuntaban a otros archivos externos y lo dejé lo más simple posible, y no funciona.

Te comparto toda la pagina PHP para vean todo mi codigo.

Código PHP:
<?php
include "inc/cnf.php";
include 
"inc/func.php";
?>
<html>
<head>
<title>Sisterma de Reportes</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<!--script type="text/javascript" src="js/jquery.js"></script-->
<script type="text/javascript">
    function abrir(url) {
        open(url,'printing','');
    }    
</script>
<style type="text/css">
    input, select, table {
        height: 20px; 
        font-size: 10px;
        font-weight: bold;
        font-family: arial;
        color: black;
        margin: 0;
        padding: 0pt; 
        float: none;
        vertical-align: middle;
    }
</style>
</head>
<body>
<div align="center" style="font-size: 14px; font-family: arial;">
<b>Simulador de Intereses</b>
<table width="100%" style="font-size: 12px;">
<tr>
<td  align="center" width="50%">
<form method="post" action="">
    RUC: <input type="text" name="cedula" size="10" /><br />
    Empresa: <select name="empresa">
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
    <option value="D">D</option>
</select><br /> 
<input type="submit" name="submit" value="Comenzar" /><br />
<input type="button" name="sim_libre" value="Simulador Libre" onclick="abrir('sim_libre.php');" />
</form>
</td>
<td width="50%">
<?php
if (@$_POST["submit"]) {
    if (
$_POST["cedula"] && $_POST["empresa"]) {
        
$base $_POST["empresa"];
        
$ci $_POST["cedula"];
        
mssql_select_db($base);
        
$tasa getTasa();
        
//Primero buscamos que el cliente exista en la BD y que tenga
        //Prestamo o Financiación
        
$sql_found "SELECT xxxx FROM xxxx WHERE NNN LIKE '".$ci."'";
        
$que_found mssql_query($sql_found);
        
$row_found mssql_fetch_assoc($que_found);
        echo 
"Nombre: ".$row_found["Nombre_Apellido"]."<br />";
        if (
$row_found["Moneda"] == "GS") {
            echo 
"Balance: ".$row_found["Moneda"]." ".number_format($row_found["BalanceGS"],0,".",",")."<br />";
        } else {
            echo 
"Balance: ".$row_found["Moneda"]." ".number_format($row_found["BalanceUS"],2,".",",")."<br />";
        }
        echo 
"Ruc: ".$row_found["Ruc"]."<br />";
        
//Ahora tocaría buscar los prestamos activos
        //Para ello miramos las facturas ND
        
$sql_dn "SELECT xxxx FROM xxxx     WHERE NNN NOT IN ('Y', 'C') AND MMM = 'DN' AND OOO NOT IN ('C') AND PPP = '".$row_found["Codigo"]."'";
        
$que_dn mssql_query($sql_dn);
?>        
        </td>
    </tr>
</table>
<hr />
<table width="100%">
    <tr>
        <td align="center">
        <table border="1" cellspacing="0" cellpading="0">
            <tr bgcolor="00D1FF">
                <th>No. Factura</th>
                <th>Stock</th>
                <th>Monto</th>
                <th>Cuotas</th>
                <th>Fecha Otorgado</th>
                <th>Fecha Vencimiento</th>
                <th>Moneda</th>
                <th>Ver</th>
            </tr>
        
<?php
        
while($row_dn mssql_fetch_assoc($que_dn)) {
            
$zzz[] = $row_dn['xxx'];
?>
            <tr>                
                <td><?=$row_dn["No_Factura"]?></td>
                <td><?=$row_dn["Stock"]?></td>
                <td align="right">
<?php
if ($row_dn["Moneda"] == "GS") {
    echo 
number_format($row_dn["MontoGS"],0,".",",");
} else {
    echo 
number_format($row_dn["MontoUS"],2,".",",");
?>
</td>
<td align="center"><?=$row_dn["Cuotas"]?></td>
<td align="center"><?=$row_dn["Fecha_Otorgado"]?></td>
<td align="center"><?=$row_dn["Fecha_Vencimiento"]?></td>
<td><?=$row_dn["Moneda"]?></td>
<td><a href="estado.php?id=<?=$row_dn['xxx']?>&bd=<?=$base?>&mo=<?=$row_dn['Moneda']?>" target="_blank">Detalle</a></td>
</tr>
<?php //Cierra el While de Facturas ?>
        </table>
        </td>
        <td>
            <table border="0">
                <tr valign="top">
                    <td>Capital:</td>
                    <td><input type="text" id="total_cuota" /></td>
                </tr>
                <tr valign="top">
                    <td>Total de Interés:</td>
                    <td><input type="text" id="total_interes" /></td>
                </tr>
                <tr valign="middle">
                    <td><input type="checkbox" id="honorarios" /> Honorarios Judiciales 10%:</td>
                    <td><input type="text" id="total_honorarios" /></td>
                </tr>
                <tr valign="top">
                    <td>Total a Pagar:</td>
                    <td><input type="text" id="total_pagar" /></td>
                </tr>
            </table>
        </td>
    </tr>
</table>
        <br />
        <table border="1" cellspacing="0" cellpading="0" width="100%">
            <tr bgcolor="00D1FF">
                <th>Selec.</th>
                <th>No. Cuota</th>
                <th>Stock</th>
                <th>Fecha Vto.</th>
                <th>Fecha Pago</th>
                <th>Dias de Diferencia</th>
                <th>Monto Cuota</th>
                <th>Monto Interés</th>
                <th>Total a Pagar</th>
            </tr>
<?php
    
//Ahora armamos todas las cuotas pendientes del cliente.
    //Primero convertimos a texto separados por , los miembros del Array
    
$de implode(","$zzzz); 
    
$sql_dat "SELECT xxxxx FROM xxxxx WHERE NNN IN (".$de.") AND MMM NOT IN ('C') ORDER BY OOO ASC";
    
$que_dat mssql_query($sql_dat);
    
$i 0//A modo de nomenclatura 
    
while($row_dat mssql_fetch_assoc($que_dat)) { $i++;    ?>
<tr align="center">
<td><input type="checkbox" onclick="sumar()" /></td>
<td><input type="text" id="cuota_lin<?=$i?>" value="<?=$row_dat['Id_Cuota']?>" size="2" disabled="disabled" /></td>
<td><input type="text" id="stock_lin<?=$i?>" value="<?=$row_dat["Stock"]?>" size="6" disabled="disabled" /></td>
<td><input type="text" id="vcto_lin<?=$i?>" value="<?=$row_dat["Fecha_Vto"]?>" size="10" disabled="disabled" /></td>
<td><input type="text" id="hoy_lin<?=$i?>" value="<?=date("d/m/Y")?>" size="10" disabled="disabled" /></td>
<?php
//Sacamos la diferencia de dias
$vcto UnfixDate($row_dat["Fecha_Vto"]);
$fec_pago UnfixDate(date("d/m/Y"));
$dias_dif = (strtotime($fec_pago)-strtotime($vcto))/86400;
$dias_dif floor($dias_dif);
?>                
<td><input type="text" id="diasdif_lin<?=$i?>" value="<?=$dias_dif?>" size="4" disabled="disabled" /> días</td>
<?php if ($row_dat["Moneda"] == "GS") { 
$monto_cuota number_format($row_dat["CuotaGS"],0,".",",");
} else {
$monto_cuota number_format($row_dat["CuotaUS"],2,".",",");
?>
<td class="monto_cuota_lin"><?=$monto_cuota?></td>
<?php
//Definimos los interes
$int_3 0.1;
$int_1 0.033;
//Hacemos calculos de interes
//Para 3%
if ($dias_dif 0) { //O sea es negativo se escoge el 1%
$porc $dias_dif $int_1;    
} else {
$porc $dias_dif $int_3;
}
//Sacamos calculo para el monto del Interes
if ($row_dat["Moneda"] == "GS") { $elemento "CuotaGS";
} else { 
$elemento "CuotaUS"; }
$monto_int $row_dat[$elemento]*$porc/100;
//Ahora calculamos el Monto a Pagar
$pago $row_dat[$elemento]+$monto_int;
if (
$row_dat["Moneda"] == "GS") {
$monto_int number_format($monto_int,0,".",",");
} else {
$monto_int number_format($monto_int,2,".",",");
}
?>
<td><input type="text" id="monto_int_lin" value="<?=$monto_int?>" size="6" disabled="disabled" /></td>
<?php
if ($row_dat["Moneda"] == "GS") {
$monto_pago number_format($pago,0,".",",");
} else {
$monto_pago number_format($pago,2,".",",");
}
?>
<td><input type="text" id="pago_lin<?=$i?>" value="<?=$monto_pago?>" size="10" disabled="disabled" /></td>
</tr>
<?php //Cierra el While de los pendientes ?>                
</table>
</td>
    </tr>
</table>
<?php
 
} else { echo "<b>Debe ingresar los datos que se piden</b><br />"; }
?>
</div>
<script>
function sumar(){
    var checks = document.querySelectorAll(":checked"),
        total = checks.length,
        suma = 0;
    for (var i = 0; i < total; i++){
        var celda = checks[i].parentNode,
            fila = celda.parentNode,
            monto = fila.querySelector(".monto_cuota_lin").innerHTML;
        monto = Number(monto.replace(",", ""));
        suma += monto;
    }
    alert(suma);
}
</script>
</body>
</html>

La idea es que cada vez que se escoja un checkbox de una fila en la tablita superior, se calculen en el input de total de cuotas, el monto_coutas_lin; después el monto_int_lin en el input de total de interes. Y por ultima hacer una suma entre los elementos total_cuota + total_interes. Pero haciendolo con uno, lo logro con los demás.

Gracias de antemano.
  #4 (permalink)  
Antiguo 23/10/2014, 08:12
 
Fecha de Ingreso: diciembre-2010
Ubicación: Asunción
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: Calculo por Seleccion de Checkbox (No dinámico/No estático)

Se me ocurre mejor mostrarte una salida HTML...

Código HTML:
Ver original
  1. <title>Sisterma de Reportes</title>
  2. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  3. <!--script type="text/javascript" src="js/jquery.js"></script-->
  4. <script type="text/javascript">
  5.     function abrir(url) {
  6.         open(url,'printing','');
  7.     }  
  8. <style type="text/css">
  9.     input, select, table {
  10.         height: 20px;
  11.         font-size: 10px;
  12.         font-weight: bold;
  13.         font-family: arial;
  14.         color: black;
  15.         margin: 0;
  16.         padding: 0pt;
  17.         float: none;
  18.         vertical-align: middle;
  19.     }
  20. </head>
  21. <div align="center" style="font-size: 14px; font-family: arial;">
  22. <b>Simulador de Intereses</b>
  23. <table width="100%" style="font-size: 12px;">
  24.     <tr>
  25.         <td  align="center" width="50%">
  26.             <form method="post" action="">
  27.                 RUC: <input type="text" name="cedula" size="10" /><br />
  28.                 Empresa: <select name="empresa">
  29.                         <option value="A">A</option>
  30.                         <option value="B">B</option>
  31.                         <option value="C">C</option>
  32.                         <option value="D">D</option>
  33.                         </select><br />
  34.                 <input type="submit" name="submit" value="Comenzar" /><br />
  35.                 <input type="button" name="sim_libre" value="Simulador Libre" onclick="abrir('sim_libre.php');" />
  36.             </form>
  37.         </td>
  38.         <td width="50%">
  39. Nombre: FULANA DE TAL<br />Balance: GS 4,218,500<br />Ruc: XXXXXX-X<br />      
  40.         </td>
  41.     </tr>
  42. <hr />
  43. <table width="100%">
  44.     <tr>
  45.         <td align="center">
  46.         <table border="1" cellspacing="0" cellpading="0">
  47.             <tr bgcolor="00D1FF">
  48.                 <th>No. Factura</th>
  49.                 <th>Stock</th>
  50.                 <th>Monto</th>
  51.                 <th>Cuotas</th>
  52.                 <th>Fecha Otorgado</th>
  53.                 <th>Fecha Vencimiento</th>
  54.                 <th>Moneda</th>
  55.                 <th>Ver</th>
  56.             </tr>
  57.        
  58.             <tr>               
  59.                 <td>001-001-0000821</td>
  60.                 <td></td>
  61.                 <td align="right">
  62.                     4,602,000               </td>
  63.                 <td align="center">12</td>
  64.                 <td align="center">06/06/2014</td>
  65.                 <td align="center">30/06/2015</td>
  66.                 <td>GS</td>
  67.                 <td><a href="estado.php?id=XXXX&bd=A&mo=GS" target="_blank">Detalle</a></td>
  68.             </tr>
  69.         </table>
  70.         </td>
  71.         <td>
  72.             <table border="0">
  73.                 <tr valign="top">
  74.                     <td>Capital:</td>
  75.                     <td><input type="text" id="total_cuota" /></td>
  76.                 </tr>
  77.                 <tr valign="top">
  78.                     <td>Total de Interés:</td>
  79.                     <td><input type="text" id="total_interes" /></td>
  80.                 </tr>
  81.                 <tr valign="middle">
  82.                     <td><input type="checkbox" id="honorarios" /> Honorarios Judiciales 10%:</td>
  83.                     <td><input type="text" id="total_honorarios" /></td>
  84.                 </tr>
  85.                 <tr valign="top">
  86.                     <td>Total a Pagar:</td>
  87.                     <td><input type="text" id="total_pagar" /></td>
  88.                 </tr>
  89.             </table>
  90.         </td>
  91.     </tr>
  92. <br />
  93. <table border="1" cellspacing="0" cellpading="0" width="100%">
  94. <tr bgcolor="00D1FF">
  95. <th>Selec.</th>
  96. <th>No. Cuota</th>
  97. <th>Stock</th>
  98. <th>Fecha Vto.</th>
  99. <th>Fecha Pago</th>
  100. <th>Dias de Diferencia</th>
  101. <th>Monto Cuota</th>
  102. <th>Monto Interés</th>
  103. <th>Total a Pagar</th>
  104. </tr>
  105. <tr align="center">
  106. <td><input type = "checkbox" onclick = "sumar()" /></td>
  107. <td><input type="text" id="cuota_lin1" value="2" size="2" disabled="disabled" /></td>
  108. <td><input type="text" id="stock_lin1" value="" size="6" disabled="disabled" /></td>
  109. <td><input type="text" id="vcto_lin1" value="30/08/2014" size="10" disabled="disabled" /></td>
  110. <td><input type="text" id="hoy_lin1" value="23/10/2014" size="10" disabled="disabled" /></td>
  111. <td><input type="text" id="diasdif_lin1" value="53" size="4" disabled="disabled" /> días</td>
  112. <td class = "monto_cuota_lin">383,500</td>
  113. <td><input type="text" id="monto_int_lin" value="20,326" size="6" disabled="disabled" /></td>
  114. <td><input type="text" id="pago_lin1" value="403,826" size="10" disabled="disabled" /></td>
  115. </tr>
  116. <tr align="center">
  117. <td><input type = "checkbox" onclick = "sumar()" /></td>
  118. <td><input type="text" id="cuota_lin2" value="3" size="2" disabled="disabled" /></td>
  119. <td><input type="text" id="stock_lin2" value="" size="6" disabled="disabled" /></td>
  120. <td><input type="text" id="vcto_lin2" value="30/09/2014" size="10" disabled="disabled" /></td>
  121. <td><input type="text" id="hoy_lin2" value="23/10/2014" size="10" disabled="disabled" /></td>
  122. <td><input type="text" id="diasdif_lin2" value="22" size="4" disabled="disabled" /> días</td>
  123. <td class = "monto_cuota_lin">383,500</td>
  124. <td><input type="text" id="monto_int_lin" value="8,437" size="6" disabled="disabled" /></td>
  125. <td><input type="text" id="pago_lin2" value="391,937" size="10" disabled="disabled" /></td>
  126. </tr>
  127. <tr align="center">
  128. <td><input type = "checkbox" onclick = "sumar()" /></td>
  129. <td><input type="text" id="cuota_lin3" value="4" size="2" disabled="disabled" /></td>
  130. <td><input type="text" id="stock_lin3" value="" size="6" disabled="disabled" /></td>
  131. <td><input type="text" id="vcto_lin3" value="30/10/2014" size="10" disabled="disabled" /></td>
  132. <td><input type="text" id="hoy_lin3" value="23/10/2014" size="10" disabled="disabled" /></td>
  133. <td><input type="text" id="diasdif_lin3" value="-7" size="4" disabled="disabled" /> días</td>
  134. <td class = "monto_cuota_lin">383,500</td>
  135. <td><input type="text" id="monto_int_lin" value="-886" size="6" disabled="disabled" /></td>
  136. <td><input type="text" id="pago_lin3" value="382,614" size="10" disabled="disabled" /></td>
  137. </tr>
  138. <tr align="center">
  139. <td><input type = "checkbox" onclick = "sumar()" /></td>
  140. <td><input type="text" id="cuota_lin4" value="5" size="2" disabled="disabled" /></td>
  141. <td><input type="text" id="stock_lin4" value="" size="6" disabled="disabled" /></td>
  142. <td><input type="text" id="vcto_lin4" value="30/11/2014" size="10" disabled="disabled" /></td>
  143. <td><input type="text" id="hoy_lin4" value="23/10/2014" size="10" disabled="disabled" /></td>
  144. <td><input type="text" id="diasdif_lin4" value="-38" size="4" disabled="disabled" /> días</td>
  145. <td class = "monto_cuota_lin">383,500</td>
  146. <td><input type="text" id="monto_int_lin" value="-4,809" size="6" disabled="disabled" /></td>
  147. <td><input type="text" id="pago_lin4" value="378,691" size="10" disabled="disabled" /></td>
  148. </tr>
  149. <tr align="center">
  150. <td><input type = "checkbox" onclick = "sumar()" /></td>
  151. <td><input type="text" id="cuota_lin5" value="6" size="2" disabled="disabled" /></td>
  152. <td><input type="text" id="stock_lin5" value="" size="6" disabled="disabled" /></td>
  153. <td><input type="text" id="vcto_lin5" value="30/12/2014" size="10" disabled="disabled" /></td>
  154. <td><input type="text" id="hoy_lin5" value="23/10/2014" size="10" disabled="disabled" /></td>
  155. <td><input type="text" id="diasdif_lin5" value="-68" size="4" disabled="disabled" /> días</td>
  156. <td class = "monto_cuota_lin">383,500</td>
  157. <td><input type="text" id="monto_int_lin" value="-8,606" size="6" disabled="disabled" /></td>
  158. <td><input type="text" id="pago_lin5" value="374,894" size="10" disabled="disabled" /></td>
  159. </tr>
  160. <tr align="center">
  161. <td><input type = "checkbox" onclick = "sumar()" /></td>
  162. <td><input type="text" id="cuota_lin6" value="7" size="2" disabled="disabled" /></td>
  163. <td><input type="text" id="stock_lin6" value="" size="6" disabled="disabled" /></td>
  164. <td><input type="text" id="vcto_lin6" value="30/01/2015" size="10" disabled="disabled" /></td>
  165. <td><input type="text" id="hoy_lin6" value="23/10/2014" size="10" disabled="disabled" /></td>
  166. <td><input type="text" id="diasdif_lin6" value="-99" size="4" disabled="disabled" /> días</td>
  167. <td class = "monto_cuota_lin">383,500</td>
  168. <td><input type="text" id="monto_int_lin" value="-12,529" size="6" disabled="disabled" /></td>
  169. <td><input type="text" id="pago_lin6" value="370,971" size="10" disabled="disabled" /></td>
  170. </tr>
  171. </td>
  172. </tr>
  173. </div>
  174. function sumar(){
  175.     var checks = document.querySelectorAll(":checked"),
  176.         total = checks.length,
  177.         suma = 0;
  178.     for (var i = 0; i < total; i++){
  179.         var celda = checks[i].parentNode,
  180.             fila = celda.parentNode,
  181.             monto = fila.querySelector(".monto_cuota_lin").innerHTML;
  182.         monto = Number(monto.replace(",", ""));
  183.         suma += monto;
  184.     }
  185.     alert(suma);
  186. }
  187. </body>
  188. </html>

No debería dar problemas, el debug me sigue mostrando el error.

Saludos
  #5 (permalink)  
Antiguo 23/10/2014, 08:50
 
Fecha de Ingreso: diciembre-2010
Ubicación: Asunción
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: Calculo por Seleccion de Checkbox (No dinámico/No estático)

Creo que descubrí donde puede estar el problema y es que al inicio tengo un formulario al eliminarlo en el HTML entonces si ejecuto el código javascript. Ahora voy a probar crear un <iframe> en la página que cargue ese modulo aparte y que ejecute dentro del mismo. Ya les comentaré el resultado

Saludos
  #6 (permalink)  
Antiguo 23/10/2014, 09:22
 
Fecha de Ingreso: diciembre-2010
Ubicación: Asunción
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: Calculo por Seleccion de Checkbox (No dinámico/No estático)

Bueno listo, ya se resolvió. No se porque el javascript no se ejecuta cuando hay un formulario. Opté por hacer un <iframe> dentro de la pagina. Llamo a mi iframe con el SUBMIT del PHP y le paso en un método GET las variables necesarias para proceder a los querys en la BD. Y luego tal cual está el script. La única diferencia es que en mi checkbox tengo que añadir todas las funciones que preciso para que me salgan los valores.
Código HTML:
Ver original
  1. <input type="checkbox" onclick="sumarCuota(); sumarInteres(); sumarTotal()" />

Por demás mis funciones JS solo hacen suma de los valores seleccionados.

Saludos

Etiquetas: calculo, checkbox, input, jquery, js, php, seleccion, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:34.