JavaScript - funcion calcular precio

 
Vista:
Imágen de perfil de fran

funcion calcular precio

Publicado por fran (11 intervenciones) el 01/02/2013 13:33:03
Buenos dias, soy nuevo en este foro, y queria plantearos una funcion a ver si me podeis echar una mano.
En la funcion que hos presento debo realizar un calculo total dentro del elemento "precio final"; me podeis decir como implementar esta funcion y como se hace la llamada a la misma?
Os dejo gran parte de la funcion hecha a falta de solo realizar el calculo; saludos:

( se trata de calcular el alquiler de productos el cual lo selecciona el usuario mediante una lista select, despues mediante elemento "radio" el usuario selecciona si lo quiere nuevo (plus 50€) o seminuevo, despues un elemento text para multiplicar los dias de alquiler puestos por el usuario, y un checkbox que si el usuario lo selecciona se añade el iva del 8% a lo añadido anteriormente por el usuario; y finalmente esta el elemento text en donde tiene que aperecer el total y si algun elemento anterior se modifica este automaticamente tambien.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function calcula_precio() {
  //aqui cojo el elemento de la lista seleccionado.
  if(document.getElementById("opciones").selectedIndex){
      seleccion = document.getElementById("opciones").value;
      }
      else{alert("Debes seleccionar un producto");}
 
   //aqui cojo el elemento radio seleccionado.
for(var i=0; i<document.formu.estado.length;i++){
        if(document.formu.estado[i].checked){
          seleccionado = document.formu.estado[i].value;
           }
          }
 
   //aqui cojo la cantidad introducida por el usuario.  
 var unidades = document.getElementById("cantidad").value;
  if(unidades > 0){
    var unidades
    }
      else{alert("Debes poner número días");return false;  }
 
    //aqui cojo el valor del iva si ha sido seleccionado.
 if(document.getElementById("iva").checked){
  impuesto = document.getElementById("iva").value;}
 
    }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

funcion calcular precio

Publicado por fran (7 intervenciones) el 01/02/2013 23:01:09
el código html es este; y gracias de antemano:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<div id="seccion_formulario">
          	<h3>Rellena los datos</h3>
        <form action="#" method="post" name="formu" enctype="multipart/form-data">
 
        		<div id="datos">
        		   <label for="opciones">Coches alquiler</label><br/>
                   <select id="opciones" name="opciones">
                   	<option value="" selected="selected">Selecciona</option>
                   	<option value="150">Coche familiar</option>
                   	<option value="200">Coche dinámico</option>
                   	<option value="500">Coche deportivo</option>
                   </select>
                   <label id="numero" for="cantidad">Número</label>
                   <input type="text" id="cantidad" name="numero" value="" size="1" maxlength="1" onkeypress="return solo_numero(event);" /><br/>
                   <input type="radio" checked="checked" name="estado" value="50" />
                   Nuevo
                   <input type="hidden" id="nuevo" value="" />50€<br/>
                   <input type="radio" name="estado" value="0" />Seminuevo
                   <input type="hidden" id="seminuevo" value="" />
                   <div id="checkbox">
                   <input type="checkbox" id="iva" name="impuesto" value="8" />Con IVA
                   <input type="hidden" id="iva" value="" />8%<br/>
                 </div>
                   <label id="calendar" for="fecha">Fecha alquiler:</label>
                   <input type="text" id="fecha" name="dia" value="Lunes, 02-Ene-2010" size="22" maxlength="20" disabled="disabled" onselect="tratarCalendario('fecha')"; />
  <a href="#"><img src="js/jscalendar-1.0/skins/aqua/boton_calendar.png" id="selector" class="boton" /></a><br/>
                   <label id="etiqueta" for="precio">Precio final:</label>
                   <input type="text" id="precio" name="precio_final" value="" size="10" maxlength="10"  /><br/>
 
 
                </div>
 
        </form>
        <h3>Alquiler vehículos por día:</h3><br/><br/>
                    <p>-Coche familiar: 150€<br/>
                    -Coche dinámico: 200€<br/>
                    -Coche deportivo: 500€</p>
 
          </div>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

funcion calcular precio

Publicado por xve (2100 intervenciones) el 03/02/2013 11:36:43
Hola Fran, he intentado probar tu código pero me da error porque me falta la función de javascript solo_numero()...
Si nos la puedes mostrar...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de fran

funcion calcular precio

Publicado por fran (11 intervenciones) el 04/02/2013 16:26:39
Te refieres a esta? aunque solo es una funcion para que el usuario solo pueda introducir en el elemento caracteres numericos. saludos...

1
2
3
4
5
6
7
//funcion para obligar a poner solo caracteres numericos llamando a la funcion con el evento onkeypress
function solo_numero(numero){
  var evento = window.Event ? true : false;
// Backspace = 8, Enter = 13, ’0&#8242; = 48, ’9&#8242; = 57,.’ = 46
var key = evento ? numero.which : numero.keyCode;
return (key >= 48 && key <= 57 || key==8);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

funcion calcular precio

Publicado por fran (7 intervenciones) el 05/02/2013 20:51:54
ya conseguí realizar la función; os la muestro a ver que os parece y si pensais que se puede mejorar o realizar de mejor manera; saludos...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/*funcion que muestra y oculta el texto segun las condiciones extablecidas*/
function muestraOculta(enlace,textos) {
 
       if(textos.style.display=="" || textos.style.display=="block"){
      textos.style.display="none";
   }
   else{
      textos.style.display="block";
   }
   if(textos.style.display=="none"){
      enlace.innerHTML="Mostrar contenidos";}
   else{enlace.innerHTML="Ocultar contenidos";}
}
   //para llamar a la funcion= this, mas el identificador id que corresponda.
 
 
 
 
//script para configurar el calendario
window.onload=function(){
function tratarCalendario(cal) {
 
 
var valor = document.getElementById("fecha");
var valor2 = document.getElementById("fecha").style.color = "#FFFFFF";
var dia_mes=cal.date.getDate();
var dia_semana=cal.date.getDay();
 
//condicion para saber si la fecha es multiplo de 5
 if(dia_mes % 5 == 0){
  valor.style.backgroundColor = "#AD0000";
 alert("No es posible el alquiler, ya que cada 5 días cierra la empresa por descanso del personal.");
 return false;
}
  else{valor.style.backgroundColor = "#007800"};
//condicion para saber si la fecha es fin de semana
 if(dia_semana == 0 || dia_semana == 6){
  alert("Se abonará un plus adicional por ser fin de semana.");
 }
}
Calendar.setup({inputField: "fecha", ifFormat: "%A, %d - %b - %Y", button: "selector", onUpdate: tratarCalendario})
}
//funcion para obligar a poner solo caracteres numericos llamando a la funcion con el evento onkeypress
function solo_numero(numero){
  var evento = window.Event ? true : false;
// Backspace = 8, Enter = 13, ’0&#8242; = 48, ’9&#8242; = 57,.’ = 46
var key = evento ? numero.which : numero.keyCode;
return (key >= 48 && key <= 57 || key==8);
}
 
 
 
 
 
//funcion formulario para calcular precio producto.
function calcula_precio() {
  //aqui cojo el elemento de la lista seleccionado.
  if(document.getElementById("opciones").selectedIndex){
      seleccion = document.getElementById("opciones").value;
      }
      //else{alert("Debes seleccionar un producto"); return false;}  
 
   //aqui cojo el elemento radio seleccionado.
for(var i=0; i<document.formu.estado.length;i++){
        if(document.formu.estado[i].checked){
          seleccionado = document.formu.estado[i].value;
           }
          }
 
   //aqui cojo la cantidad introducida por el usuario.  
 var unidades = document.getElementById("cantidad").value;
  if(unidades > 0){
    var unidades
    }
      //else{alert("Debes poner número días");return false;  } 
 
    //aqui cojo el valor del iva si ha sido seleccionado.
 if(document.getElementById("iva").checked){
  impuesto = document.getElementById("iva").value;}
 
   //y aqui realizo la ecuación.
     if(document.getElementById("iva").checked){
     var precio = (parseInt(seleccion) + parseInt(seleccionado)) * parseInt(unidades);
     var precioConImpuestos = (1 + parseInt(impuesto)/100) * precio;
     document.getElementById("precio").value = precioConImpuestos.toFixed(2);}
     else{ var precio = (parseInt(seleccion) + parseInt(seleccionado)) * parseInt(unidades);
          document.getElementById("precio").value = precio.toFixed(2); }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

funcion calcular precio

Publicado por Javier (6 intervenciones) el 25/03/2013 18:37:52
Hola Fran, buenas tardes.

He estado probando todo este código y me va prácticamente todo excepto que no me realiza la función "Calcula Precio".

He visto arriba el script que realiza dicha función "function calcula_precio()", pero no consigo ver/averiguar cómo he de relacionar esa función en el código HTML para que me la realice.

Por más que intento meter en el último Input:

<input type="text" id="precio" name="precio_final" value="" size="10" maxlength="10" />

códigos como, por ejemplo, onselect="calcula_precio('precio')" y cosas así, cuando clico en la casilla de Precio Final ni me calcula nada, ni me dice si he seleccionado alguna opción o no, etc etc....vamos, que yo creo que no me está ni oliendo el script.

También he de decirte que dentro del <head> he relacionado el código html al script en cuestión indicando:

<script type="text/javascript" src="js/calcula_precio.js"></script> que es donde yo tengo guardado mi archivo JS.

¿Me puedes indicar qué me puede faltar para que esto me funcione?.

Muchísimas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de fran

funcion calcular precio

Publicado por fran (11 intervenciones) el 26/03/2013 12:28:39
Vamos a ver si consigo ayudarte y que me entiendas.

en la funcion calcula_precio, realizo las condiciones para cada elemento del formulario y en el formulario se relacionan estas funciones llamando a dicha funcion en cada elemento del mismo ( calcula_precio() ).

Despues de ello, para que la ecuacion te aparezca en el elemento de precio_final, hay que poner calcula_precio() dentro de la funcion tratarCalendario; que en este caso quien llama a esa funcion es el propio calendario como veras en calendar.setup.

Entonces el formulario te funcionara y cada vez que cambies algun valor este automaticamente cambiara en precio_final.

Recuerda que la clave esta en poner la funcion calcula_precio dentro de la funcion tratarCalendario ya que es el propio calendario quien llamara a esa funcion que a su vez realizara la ecuacion...
( te digo esto en el caso que utilices el calendario que yo utilizo sino vastaria con llamar a la funcion en el propio elemento del formulario ; ah y para llamar a la funcion es calcula_precio(), sin valores).


Ya me diras si en algo te he aclarado las cosas. Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

funcion calcular precio

Publicado por Javier (6 intervenciones) el 26/03/2013 12:43:11
Gracias de antemano Fran. Ahora te digo cosas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

funcion calcular precio

Publicado por Javier (6 intervenciones) el 26/03/2013 13:11:18
A ver Fran, te cuento.

Por un lado, he conseguido que me lea la función calcula_precio efectivamente metiendo en el INPUT lo siguiente: onclick="calcula_precio()"

Ahora viene mi problema y que no consigo resolver aún leyendo lo que me has puesto y es que no consigue que se me calcule el precio.

Si cojo el script:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function calcula_precio() {
 
//Cojo el elemento de la lista seleccionado.
  if(document.getElementById("opciones").selectedIndex){
      seleccion = document.getElementById("opciones").value;
      }
      else{alert("Debes seleccionar un producto");}
 
//Cojo el elemento radio seleccionado.
  for(var i=0; i<document.formulario2.estado.length;i++){
        if(document.formulario2.estado[i].checked){
          seleccionado = document.formulario2.estado[i].value;
           }
          }
 
//Cojo la cantidad introducida.  
 var unidades = document.getElementById("cantidad").value;
  if(unidades > 0){
    var unidades
    }
      else{alert("Debes poner una cantidad");return false;  }
 
//Cojo el valor del iva si ha sido seleccionado.
  if(document.getElementById("iva").checked){
  impuesto = document.getElementById("iva").value;}
 
    }
 
//Y aqui realizamos la ecuación.
     if(document.getElementById("iva").checked){
     var precio = (parseInt(seleccion) + parseInt(seleccionado)) * parseInt(unidades);
     var precioConImpuestos = (1 + parseInt(impuesto)/100) * precio;
     document.getElementById("precio").value = precioConImpuestos.toFixed(2);}
     else{ var precio = (parseInt(seleccion) + parseInt(seleccionado)) * parseInt(unidades);
          document.getElementById("precio").value = precio.toFixed(2); }
}



y anulo la parte de abajo (la de la ecuación) veo como SI que me hace el control de producto seleccionado y Cantidad, es decir, sí que me lee el script, pero en cuanto activo la parte de abajo de la ecuación ya me falla todo y es como si no me leyera el script.

---------------------------------------------------------------

He estado intentando hacer pruebas con lo que me has contestado, pero soy muy pollo para esto.

Si te parece bien, te voy a poner aquí mis códigos para ver si me das luz con lo de calcularse el precio conforme se modifique algún valor:

CODIGO HTML:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<form name="formulario2" id="formulario2" method="post" enctype="multipart/form-data" action="#">
 
 
<p>Producto</p>
<select id="opciones" name="opciones">
  <option value="" selected="selected">Seleccione opción</option>
  <option value="150">Yate</option>
  <option value="200">Moto</option>
  <option value="500">Zodiac</option>
</select>
 
 
 
  <p>Cantidad</p>
  	<input type="text" id="cantidad" name="cantidad" onChange="validarSiNumero(this.value);">
 
	<input type="radio" name="estado" value="50" checked="checked" /> Nuevo
	<input type="hidden" id="nuevo" value="" />(plus 50€)
	<input type="radio" name="estado" value="0" /> Seminuevo
	<input type="hidden" id="seminuevo" value="" />
 
 
 
<p>
	<input type="checkbox" id="iva" name="impuesto" value="8" />Con IVA
	<input type="hidden" id="iva" value="" />8%
</p>
 
 
<p> Introduzca la fecha pulsando sobre la imagen del calendario: </p>
 
	<input type="text" id="fecha" name="dia" value="Miércoles, 02-Ene-2013" size="22" maxlength="20" disabled="disabled" onselect="tratarCalendario('fecha')"; />
  	<a href="#"><img src="jscalendar/calendario.jpg" id="selector" class="boton" /></a>
 
 
 
  <p> Precio final:
                <input type="text" id="precio" name="precio_final" value="" size="10" maxlength="10" onclick="calcula_precio()"; / >
 </p>
 
 
</form>



y, aparte de eso, tengo la funcion del Calendar y la de Calcula Precio separadas en 2 archivos JS:

JS DEL CALENDARIO (que me funciona sin problemas):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
window.onload=function(){
function tratarCalendario(cal) {
 
 
var valor = document.getElementById("fecha");
var valor2 = document.getElementById("fecha").style.color = "#FFFFFF";
var dia_mes=cal.date.getDate();
var dia_semana=cal.date.getDay();
 
//condicion para saber si la fecha es multiplo de 5
 if(dia_mes % 5 == 0){
  valor.style.backgroundColor = "#AD0000";
 alert("No es posible el alquiler, ya que cada 5 días cierra la empresa por descanso del personal.");
 return false;
}
  else{valor.style.backgroundColor = "#007800"};
//condicion para saber si la fecha es fin de semana
 if(dia_semana == 0 || dia_semana == 6){
  alert("Se abonará un plus adicional por ser fin de semana.");
 }
}
Calendar.setup({inputField: "fecha", ifFormat: "%A, %d - %b - %Y", button: "selector", onUpdate: tratarCalendario})
}


JS DE CALCULAR PRECIO:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function calcula_precio() {
 
//Cojo el elemento de la lista seleccionado.
  if(document.getElementById("opciones").selectedIndex){
      seleccion = document.getElementById("opciones").value;
      }
      else{alert("Debes seleccionar un producto");}
 
//Cojo el elemento radio seleccionado.
  for(var i=0; i<document.formulario2.estado.length;i++){
        if(document.formulario2.estado[i].checked){
          seleccionado = document.formulario2.estado[i].value;
           }
          }
 
//Cojo la cantidad introducida.  
 var unidades = document.getElementById("cantidad").value;
  if(unidades > 0){
    var unidades
    }
      else{alert("Debes poner una cantidad");return false;  }
 
//Cojo el valor del iva si ha sido seleccionado.
  if(document.getElementById("iva").checked){
  impuesto = document.getElementById("iva").value;}
 
    }
 
//Y aqui realizamos la ecuación.
     if(document.getElementById("iva").checked){
     var precio = (parseInt(seleccion) + parseInt(seleccionado)) * parseInt(unidades);
     var precioConImpuestos = (1 + parseInt(impuesto)/100) * precio;
     document.getElementById("precio").value = precioConImpuestos.toFixed(2);}
     else{ var precio = (parseInt(seleccion) + parseInt(seleccionado)) * parseInt(unidades);
          document.getElementById("precio").value = precio.toFixed(2); }
}


Ambos JS los tengo relacionados en mi código HTML para que me los lea:

<script type="text/javascript" src="js/calendar.js"></script>

<script type="text/javascript" src="js/calcula_precio.js"></script>

-------------------------------------------------------------------

A ver si lo puedo conseguir al final.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

funcion calcular precio

Publicado por Javier (6 intervenciones) el 27/03/2013 09:21:11
Por cierto, se me olvidó decirte que el Calendario es el mismo que tú porque es el skins/agua
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de fran

funcion calcular precio

Publicado por fran (11 intervenciones) el 27/03/2013 12:01:58
tienes que poner el nombre de la funcion (calcula_precio()) dentro de la función tratarCalendario(), para que al utilizar el calendario este calcule el precio automáticamente.
y por cierto para que el precio final varíe en función de cambiar algun parámetro, tienes que llamar a esa función en cada elemento del formulario. ( para evitar complicaciones es mejor que pongas todo este codigo en un mismo script)

Ya me dirás que tal...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

funcion calcular precio

Publicado por Javier (6 intervenciones) el 27/03/2013 13:36:52
Nada Fran, ya no te molesto más porque no lo consigo y, sinceramente, me he cansado de esto.

No lo consigo, no consigo hacer que me vaya la función "calcula_precio". He hecho lo que me decías de dejarlo todo más unificado en un solo script, pero lo de intentar meter el nombre de la función calcula_precio() dentro de la función tratarCalendario() no lo debo de hacer bien porque no me va. Se ve que eso me viene grande.

Lo otro (lo que me decías de que para que el precio final varíe en función de cambiar algún parámetro tengo que llamar a esa función en cada elemento del formulario) lo tengo claro, pero como directamente es que ni consigo que la función me vaya no voy a pasar al paso siguiente de hacer que recalcule cuando algo varíe.

Me doy por vencido ya que esto me ha pillado fuera de juego. Muchísimas gracias por tu ayuda. Creo que lo he tenido cerquita de conseguir, pero no he podido terminarlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de fran

funcion calcular precio

Publicado por fran (11 intervenciones) el 27/03/2013 13:45:32
A ver, yo hace 3 meses no tenia ni idea ya que he comenzado ahora ha estudiarlo ( y aún asi me cuesta) y contando con la ayuda de google, foros y mucho tiempo y dolor de cabeza se consigue si te empeñas en ello.
te paso todo el código y me dices que tal te va y en que parte te atascabas ( siempre es bueno saberlo ):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*funcion que muestra y oculta el texto segun las condiciones extablecidas*/
function muestraOculta(enlace,textos) {
 
       if(textos.style.display=="" || textos.style.display=="block"){
      textos.style.display="none";
   }
   else{
      textos.style.display="block";
   }
   if(textos.style.display=="none"){
      enlace.innerHTML="Mostrar contenidos";}
   else{enlace.innerHTML="Ocultar contenidos";}
}
   //para llamar a la funcion= this, mas el identificador id que corresponda.
 
 
 
 
//script para configurar el calendario
var plus = 0;
window.onload=function(){
function tratarCalendario(cal) {
 
 
var valor = document.getElementById("fecha");
var valor2 = document.getElementById("fecha").style.color = "#FFFFFF";
var dia_mes=cal.date.getDate();
var dia_semana=cal.date.getDay();
 
//condicion para saber si la fecha es multiplo de 5
 if(dia_mes % 5 == 0){
  valor.style.backgroundColor = "#AD0000";
 alert("No es posible el alquiler, ya que cada 5 días cierra la empresa por descanso del personal.");
 return false;
}
  else{valor.style.backgroundColor = "#007800"};
//condicion para saber si la fecha es fin de semana
 if(dia_semana == 0 || dia_semana == 6){
  alert("Se abonará un plus de 20€ por ser fin de semana.");
 }
 if((dia_semana == 0) || (dia_semana == 6)){plus=20;}else{plus=0;}
 
 calcula_precio();
}
 
Calendar.setup({inputField: "fecha", ifFormat: "%A, %d - %b - %Y", button: "selector", onUpdate: tratarCalendario })
}
//funcion para obligar a poner solo caracteres numericos llamando a la funcion con el evento onkeypress
function solo_numero(numero){
  var evento = window.Event ? true : false;
// Backspace = 8, Enter = 13, ’0&#8242; = 48, ’9&#8242; = 57,.’ = 46
var key = evento ? numero.which : numero.keyCode;
return (key >= 48 && key <= 57 || key==8);
}
 
 
 
 
 
//funcion formulario para calcular precio producto.
function calcula_precio() {
  //aqui cojo el elemento de la lista seleccionado.
  if(document.getElementById("opciones").selectedIndex){
      seleccion = document.getElementById("opciones").value;
      }
      //else{alert("Debes seleccionar un producto"); return false;}  
 
   //aqui cojo el elemento radio seleccionado.
for(var i=0; i<document.formu.estado.length;i++){
        if(document.formu.estado[i].checked){
          seleccionado = document.formu.estado[i].value;
           }
          }
 
       //aqui condicion por si el elemento cantidad se queda vacio.
          if(document.getElementById("cantidad").value==""){
    document.getElementById("cantidad").value="0";
  }
 
   //aqui cojo la cantidad introducida por el usuario.  
 var unidades = document.getElementById("cantidad").value;
  if(unidades > 0){
    var unidades
    }
      //else{alert("Debes poner número días")  } 
 
    //aqui cojo el valor del iva si ha sido seleccionado.
 if(document.getElementById("iva").checked){
  impuesto = document.getElementById("iva").value;}
 
  /*var plus = document.getElementById("fecha").value;
            if(plus > 0){var plus}*/
 
   //y aqui realizo la ecuación.
     if(document.getElementById("iva").checked){
     var precio = (parseInt(seleccion) + parseInt(seleccionado) + parseInt(plus)) * parseInt(unidades);
     var precioConImpuestos = (1 + parseInt(impuesto)/100) * precio;
     document.getElementById("precio").value = precioConImpuestos.toFixed(2);}
     else{ var precio = (parseInt(seleccion) + parseInt(seleccionado) + parseInt(plus)) * parseInt(unidades);
          document.getElementById("precio").value = precio.toFixed(2); }
 
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

funcion calcular precio

Publicado por Javier (6 intervenciones) el 27/03/2013 17:00:30
Fran, al final, todo me ha funcionado.

Me he reseteado, he respirado y he vuelto a empezar. He cogido lo que tenía ya hecho y he empezado de 0 poniendo los códigos tal cuál me has comentado tú en esto último que me decías y todo ha ido bien.

Al final el Script lo he dejado así:

//Script para configurar el CALENDARIO

var plus = 0;
window.onload=function(){
function tratarCalendario(cal) {


var valor = document.getElementById("fecha");
var valor2 = document.getElementById("fecha").style.color = "#FFFFFF";
var dia_mes=cal.date.getDate();
var dia_semana=cal.date.getDay();

//condicion para saber si la fecha es multiplo de 5
if(dia_mes % 5 == 0){
valor.style.backgroundColor = "#AD0000";
alert("No es posible el alquiler, ya que cada 5 días cierra la empresa por descanso del personal.");
return false;
}
else{valor.style.backgroundColor = "#007800"};
//condicion para saber si la fecha es fin de semana
if(dia_semana == 0 || dia_semana == 6){
alert("Se abonará un plus de 20€ por ser fin de semana.");
}
if((dia_semana == 0) || (dia_semana == 6)){plus=20;}else{plus=0;}

calcula_precio();
}

Calendar.setup({inputField: "fecha", ifFormat: "%A, %d - %b - %Y", button: "selector", onUpdate: tratarCalendario })
}






//Script con función para CALCULAR PRECIO de producto

function calcula_precio() {
//aqui cojo el elemento de la lista seleccionado.
if(document.getElementById("opciones").selectedIndex){
seleccion = document.getElementById("opciones").value;
}
else{alert("Debe seleccionar un producto de la lista"); return false;}

//aqui cojo el elemento radio seleccionado.
for(var i=0; i<document.formulario2.estado.length;i++){
if(document.formulario2.estado[i].checked){
seleccionado = document.formulario2.estado[i].value;
}
}

//aqui condicion por si el elemento cantidad se queda vacio.
if(document.getElementById("cantidad").value==""){
document.getElementById("cantidad").value="0";
}

//aqui cojo la cantidad introducida por el usuario.
var unidades = document.getElementById("cantidad").value;
if(unidades > 0){
var unidades
}
else{alert("Debe poner una Cantidad") }

//aqui cojo el valor del iva si ha sido seleccionado.
if(document.getElementById("iva").checked){
impuesto = document.getElementById("iva").value;}


//y aqui realizo la ecuación.
if(document.getElementById("iva").checked){
var precio = (parseInt(seleccion) + parseInt(seleccionado) + parseInt(plus)) * parseInt(unidades);
var precioConImpuestos = (1 + parseInt(impuesto)/100) * precio;
document.getElementById("precio").value = precioConImpuestos.toFixed(2);}
else{ var precio = (parseInt(seleccion) + parseInt(seleccionado) + parseInt(plus)) * parseInt(unidades);
document.getElementById("precio").value = precio.toFixed(2); }


}


y a partir de ese momento me ha ido perfectamente y se me recalcula el precio y todo cada vez que cambio algún parámetro.

Creo, por lo que me parece a mí, el problema lo tenía al incluir la función "calcula_precio()" en la del calendario, pero habiéndome puesto el código que me has puesto lo he hecho igual y a funcionar.

------------------------------------------------------

Lo que te quería comentar a modo de curiosidad es que en el último código que me has indicado, parece que a lo mejor sobraban un par de // para que se hicieran los Controles de la selección de Producto y de Cantidad. Creo que con esas barras habías anulado dicho control:

//else{alert("Debes seleccionar un producto"); return false;}

//else{alert("Debes poner número días") }

-------------------------------------------------------

Muchisimas.....muchísimas gracias Fran.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de fran

funcion calcular precio

Publicado por fran (11 intervenciones) el 27/03/2013 17:53:31
ok. Lo importante es no decaer y hacerlo de una manera u otra si ese es tu empeño. Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

funcion calcular precio

Publicado por jose (1 intervención) el 24/08/2021 16:42:41
<script>
// generamos un evento click y keyup para cada elemento input con la clase .input
var input=document.querySelectorAll(".input");
input.forEach(function(e) {
e.addEventListener("click",multiplica);
e.addEventListener("keyup",multiplica);
e.addEventListener("keyup",total);
e.addEventListener("click",total);
});

// funcion que genera la multiplicacion
function multiplica() {

// nos posicionamos en el tr del producto
var tr=this.closest("tr");

var total=1;

// recorremos todos los elementos del tr que tienen la clase .input
var inputs=tr.querySelectorAll(".input");
inputs.forEach(function(e) {
total*=e.value;
totales+=e.value;
});

// mostramos el total con dos decimales
tr.querySelector(".total").value=total.toFixed(2);

// indicamos que calcule el total
calcularTotal(this.closest("table"));
}

// funcion que calcula la suma total de los productos
function calcularTotal(e) {
var total=0;


// obtenemos todos los totales y los sumamos
var totales=e.querySelectorAll(".total");

totales.forEach(function(e) {
total+=parseFloat(e.value);
Iva2 = Iva1-e;
});

// mostramos la suma total con dos decimales
e.getElementsByClassName("totales")[0].value=total.toFixed(2);
e.getElementsByClassName("totales")[0].value=total.toFixed(2);
e.getElementsByClassName("totales")[0].value=totalApagar.toFixed(2);


}
// mostramos la suma total MAS EL DESCUENTO Y TOTAL APAGAR
function Iva(){
e = document.getElementById("totales").value;
Desc = document.getElementById("Totales").value;
e=Descuento=(descuento)/100*totales;
Iva1 = e*Iva;
Iva2 = Iva1-e;
e.document.getElementById("Iva").value = Iva2;+

//console.log(Iva);

}

function total(){
e = document.getElementById("TotalApagar").value;
totales = document.getElementById("Iva2").value;
total = document.getElementById("total").value;
total1 = tr + Iva2;
e.document.getElementById("TotalApagar").value = totales;
e.getElementsByClassName("totales")[0].value=totalApagar.toFixed(2);
}
</script>
como hago para sacar el descuento y el iva para obtener el total apagar se lo agradezco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar