Ayuda con código javaScript para listar desde base de datos valores y realizar cálculos

Llevo dos días intentando hacer una cosa, y te voi a preguntar ahora (que ya no se ni como solucionarlo ni nada ni como hacerlo y eso que lo he intentado te lo juro), vamos a ver el tema de dojo ya lo deje aparte en vez de un grid lo cargue en una lista normal, y ahora vuelvo al tema del listado de pizzas para realizar un pedido, vamos a ver te explico, como te acordaras tengo un combo donde muestra las pizzas de la base de datos (cuyo value es el cod) y luego una lista con las pizzas que voi añadiendo de ese combo para luego realizar el pedido, ¿bueno pues como puedo ir teniendo el precio total de las pizzas que vaya añadiendo?
Aquí te dejo el código muchas gracias tío de nuevo y de verdad que lo intente un montón de veces:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="/tags/core" %>
<%@ taglib prefix="form" uri="/tags/spring-form" %>
<%@ taglib prefix="spring" uri="/tags/spring" %>
<%@ page import="com.isotrol.pizzeria.dto.PizzaDto" %>
<%@ page import="java.util.List" %>
<%@ page import="javax.swing.DefaultComboBoxModel" %>
<%@ page import="com.isotrol.pizzeria.dto.PedidoDto" %>
<%@ page import="com.isotrol.pizzeria.modelo.Pizza" %>
<%@ page import="com.isotrol.pizzeria.dto.UsuarioDto" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.GregorianCalendar" %>
<%@ page import="java.util.Date" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
< %
   String BASEURL = request.getContextPath();
   //BASEURL ser?:  /Eva02_80-Project7-context-root
%>
< %    
    List<PizzaDto> pizza =(List<PizzaDto>)request.getSession().getAttribute("pizza");
    List<PizzaDto> pedido=new ArrayList<PizzaDto>();
    UsuarioDto usuario=(UsuarioDto)request.getSession().getAttribute("usuario");
    UsuarioDto usuario2=(UsuarioDto)request.getSession().getAttribute("usuario");
    request.setAttribute("pizza",pizza);
    request.setAttribute("pedido",pedido);
    request.setAttribute("usuario2",usuario);
    //request.setAttribute("usuario",usuario);
    String calle=usuario2.getDireccion();
    GregorianCalendar fecha=new GregorianCalendar();
    int diahoy=fecha.get(GregorianCalendar.DAY_OF_MONTH);
    int meshoy=fecha.get(GregorianCalendar.MONTH)+1;
    int annohoy=fecha.get(GregorianCalendar.YEAR);
    String fechacompleta;
    fechacompleta="" + diahoy + "/" + meshoy + "/" + annohoy;
    int indice;
    request.getSession().setAttribute("fechacompleta",fechacompleta);
%>
< html>
  < head>
  <!-- funcuion para añadir al pedido -->
<script type="text/javascript"><!--
          function enviarFormulario() {
             document.getElementById("selectMultiple").selected
           //alert(indice);
             //    document.getElementById("selectMultiple").options[0].selected = true;
             for(i=0;i<document.getElementById("selectMultiple").options.length;i++){
                 document.getElementById("selectMultiple").options.selected = true;
              }
         //var nombre=document.getElementById("selectMultiple").options[indice].text;
         //alert(nombre);
             document.formulario.submit();
        }
        function cambia(){
            document.getElementById("caja").value=""
        }
          function inicio(){
              window.location.href="login.form";
              }
          function añadir() {
              var indice = document.getElementById("pizza").selectedIndex;
              var nombre = document.getElementById("pizza").options[indice].text;
              var valor = document.getElementById("pizza").options[indice].value;
              var comboDestino = document.getElementById("selectMultiple");
              comboDestino.options.length++;
              comboDestino.options[comboDestino.options.length-1] = new Option(nombre,valor);     
            }
   </script>
<script type="text/javascript" src="js/dojo/dojo/dojo.js" djConfig="parseOnLoad:true, isDebug:false"></script>
<style type="text/css">
      @import "js/dojo/dojo/resources/dojo.css";
      @import "js/dojo/dijit/themes/tundra/tundra.css";
  </style>
<script type="text/javascript">
      dojo.require("dojo.parser");
      dojo.require("dijit.form.ComboBox");
      function setVal1(value) {
        console.debug("Selected "+value);
      }
    </script>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
<title>Listado</title>
</head>
< body class="tundra">
<div ></div>
< form:form action="altaPedido.form" commandName="altaPedidoForm" method="post"...

1 respuesta

Respuesta
1
Sí, parece algo complicadillo. Ahora no tengo mucho tiempo al estar liado con el trabajo así que te daré unas pistas que creo que pueden servir.
Para empezar necesitamos guardar el precio de cada pizza en algún lado, y puede ser así:
<c:forEach items="${pizza}"  var="cadaPizza">
                    <form:option value="${cadaPizza.cod}" label="Nombre:${cadaPizza.nombre} Precio: ${cadaPizza.precio}"></form:option>
              < input type="hidden" id="${cadaPizza.cod}" value="${cadaPizza.precio}"/>
                </c:forEach>
Ahora ya podemos conseguir el precio de cada pizza por su código desde un javascript. Podemos calcular el total en el mismo método de añadir pizza:
function añadir() {
              var indice = document.getElementById("pizza").selectedIndex;
              var nombre = document.getElementById("pizza").options[indice].text;
              var valor = document.getElementById("pizza").options[indice].value;
              var comboDestino = document.getElementById("selectMultiple");
              comboDestino.options.length++;
              comboDestino.options[comboDestino.options.length-1] = new Option(nombre,valor);     
              var precio = document.getElementById(valor).value;
var totalAnterior = document.getElementById("campoPrecioTotal").value;
document.getElementById("campoPrecioTotal").value = totalAnterior + precio;
           }
"campoPrecioTotal" (o el nombre que sea) será la id del campo donde queremos el total.
Será recomendable poner un botón para limpiar todas las pizzas seleccionadas y volver a poner el total a 0.
Con estas pistas deberías poder sacar este tema

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas