Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] El total de mi funcion jquery no toma el primer valor solo los demas

Estas en el tema de El total de mi funcion jquery no toma el primer valor solo los demas en el foro de Jquery en Foros del Web. tengo una funcion jquery y quiero calcular el total pero el primer subtotal no me toma soo los demas asi tengo mi funcion var agregarProducto ...
  #1 (permalink)  
Antiguo 08/05/2013, 08:40
 
Fecha de Ingreso: febrero-2013
Ubicación: Encarnacion
Mensajes: 7
Antigüedad: 11 años, 8 meses
Puntos: 0
Pregunta El total de mi funcion jquery no toma el primer valor solo los demas

tengo una funcion jquery y quiero calcular el total pero el primer subtotal no me toma soo los demas
asi tengo mi funcion


var agregarProducto = function(idProd,nombreProd,precio,cant){
var subtotal = precio * cant;
return "<tr>" +
"<td>" + nombreProd + "<input type='hidden'"+" name='productos[" + idProd + "]' value='" + cant + "'/></td>" +
"<td>" + precio + "</td>" +
"<td>" + cant + "</td>" +
"<td class='total'>" + subtotal + "</td>" +
"</tr>";
};

var agregarTotal = function(){
var total = 0;

$(".total").each(function(index, element) {
total += parseInt($(element).text());
});
$("#Total").text(total);
};

$("#agregarProducto").on("click",function(event) {
event.preventDefault();

var producto = $("#producto option:selected");
var cantidad = $("#cantidad");
var precio = $("#precio");
var subtotal = precio.val() * cantidad.val();
var html = agregarProducto(producto.val(),producto.text(),pro ducto.data("precio"),cantidad.val());
agregarTotal();
$("#detalhes-container tbody:first").append(html);


});


asi tengo en mi form
<tbody>

tr>
<td></td>
<td></td>
<td>Total:</td>
<td id ="Total"></td>
</tr>

</tbody>


alguien puede ayudarme :)
  #2 (permalink)  
Antiguo 08/05/2013, 09:36
Avatar de alberto510a  
Fecha de Ingreso: abril-2013
Mensajes: 351
Antigüedad: 11 años, 6 meses
Puntos: 35
Respuesta: El total de mi funcion jquery no toma el primer valor solo los demas

Saludos amigo.

El principal error de tu código es el intentar establecer variables de varias líneas esto en teoría no se puede hacer pero jQuery tiene siempre trucos interesantes para diversas ocasiones.

Con agregar "\" al final de cada línea (Excepto en la última) podrás crear variables de la extensión que quieras. Ejemplo:

Código:
var a = "\
variable de varias lineas\
linea 3\
linea 4\
esta es la ultima linea y no ponemos nada"
Aunque si lo prefieres puedes hacer esto:

Código:
var a = "hola";
var a += "a"
var a += "todos"
  #3 (permalink)  
Antiguo 08/05/2013, 15:01
 
Fecha de Ingreso: febrero-2013
Ubicación: Encarnacion
Mensajes: 7
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: El total de mi funcion jquery no toma el primer valor solo los demas

Holaa.. me puedes explicar mejor no logre entender lo que me dijiste.. :/
como poderia hacer una solucion valida para este codigo que hice??
  #4 (permalink)  
Antiguo 08/05/2013, 15:09
Avatar de alberto510a  
Fecha de Ingreso: abril-2013
Mensajes: 351
Antigüedad: 11 años, 6 meses
Puntos: 35
Respuesta: El total de mi funcion jquery no toma el primer valor solo los demas

Perdón amigo me equivoque leí mal y me pareció ver que las variables eran de varias líneas en vez de una.

Voy a tratar de encontrar el error en tu código y te comento
  #5 (permalink)  
Antiguo 08/05/2013, 15:16
Avatar de alberto510a  
Fecha de Ingreso: abril-2013
Mensajes: 351
Antigüedad: 11 años, 6 meses
Puntos: 35
Respuesta: El total de mi funcion jquery no toma el primer valor solo los demas

Pon tú código completo para que pueda revisarlo bien por ahí solo veo funciones sueltas que no se cuando ocurren ni que elementos clickas ni nada. Me sirve también que me des el link de la página si lo tienes subido.

Así sin ver el código completo te pregunto:

Código:
return "<tr>" + 
"<td>" + nombreProd + "<input type='hidden'"+" name='productos[" + idProd + "]' value='" + cant + "'/></td>" +
"<td>" + precio + "</td>" +
"<td>" + cant + "</td>" +
"<td class='total'>" + subtotal + "</td>" +
"</tr>";
};
¿Qué hace eso por medio?

Saludos
  #6 (permalink)  
Antiguo 08/05/2013, 17:39
 
Fecha de Ingreso: febrero-2013
Ubicación: Encarnacion
Mensajes: 7
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: El total de mi funcion jquery no toma el primer valor solo los demas

bueno. tratare de explicarme mejor tengo una pagina jsp y un boton add que sirve para agregar una fila a mi Orden de compra detalle en la tabla asi tengo
<a href="#" id="agregarProducto" class="button themed">Agregar</a>
<input id="btn_QuitarProducto" class="button themed"
type="button" value="Quitar" />
<hr />
<div id="detalhes-container">
<table style="width: 700px; height: 10px"
title="Detalle de Compra">
<tfoot>
<tr>Detalle de Compra</tr>
</tfoot>
<thead>
<tr>
<th width="120">Producto</th>
<th width="120">Precio</th>
<th width="120">Cantidad</th>
<th width="120">subtotal</th>
<hr/>
</tr>

</thead>
<tbody>
</tbody>
<tbody>

<tr>
<td><hr/></td>
<td><hr/></td>
<td>Total:</td>
<td id ="Total"></td>
</tr>

</tbody>
</table>
</div>
y tengo un js como te mostre arriba con las funciones jquery para insertar calcular subtotal y sumar el total de acuerdo a cada fila generada

esto que me pediste sirve para que al clicar en el boton add me genere una fila en mi tabla
me hace muy bien y calcul el subtotal todo pero he puesto un alert y el primer valor me tira 0 al insertar mi primera fila cuando le pondo alert('total') y despues los otros si toma correctamente creo q tengo q cambiar el orden o no se para que me capture desde el primer el valor del subtotal.
  #7 (permalink)  
Antiguo 08/05/2013, 21:13
 
Fecha de Ingreso: febrero-2013
Ubicación: Encarnacion
Mensajes: 7
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: El total de mi funcion jquery no toma el primer valor solo los demas

holaaa ya solucione estaba agregando mi funcion agregartotal() antes de mi funcion append(html) muchas gracias por la ayuda :)

Etiquetas: subtotal, subtotales, sumando, totales
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 16:18.