JQuery - no me multiplica el valor

   
Vista:

no me multiplica el valor

Publicado por mario (23 intervenciones) el 11/01/2014 23:02:36
hola amigos de nuevo, hoy tengo otro problemilla que no se como resolverlo, el caso es que tengo una un formulario que me muestra el nombre y edad de los usuarios de una base de datos y tambien al lado de cada uno un lista desplegable con valores de 1,2,3. lo que pretendo a modo de prueba es que al seleccionar un numero de la lista desplegable de un usuario concreto , ese numero se multiplique por la edad del usuario y me lo muestre en un ALERT,pero me da un mensaje como el que vereis, asi que si podeis echarme una mano lo agradeceria, muchas gracias.


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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
 
 
</head>
<script type="text/javascript">
 
 
function cantidad(){    // AQUI RECOJO LOS VALORES Y LOS MULTIPLICO PARA QUE SALGAN EN EL ALERT
	var edad=$("#fedad").val();
	var cant=$("#select_lista").val();
	var total=edad/cant;
	alert(total);
 
 
 
	}
 
</script>
<body>
 
 
<?php
session_start();
include ("conexion.php");
 
$id=$_POST['id'];
$nombre=$_POST['fnombres'];
$apellido=$_POST['fapellidos'];
$edad=$_POST['fedad'];
 
 
$_SESSION['carrito'][]=array('nombre'=>$nombre,'apellido'=>$apellido,'edad'=>$edad);
 
 
for($i=0;$i<count($_SESSION['carrito']);$i++)
{
?>
  <form  action="" id="formulario" name="" >
	<label>Nombre:</label><input type="text" size="30" name="fnombres" value="<?php echo $_SESSION['carrito'][$i]['nombre'].','; ?>"/>
    <label>Edad:</label><input type="text" size="30" id="fedad"  value="<?php echo $_SESSION['carrito'][$i]['edad'].','; ?>"/>
	 <select name="lista" id="select_lista" onchange="cantidad();">
              <option value="1">1</option>
              <option value="2">2</option>
              <option value="3">3</option>
            </select>
     </form><br/>
 
 
     <?php
 
}
 
?>
 
<input type="button" value="cerrar" onClick= "cierra();">
 
 
</body>
</html>


/*********** al ejecutarlo y seleccionar una cantidad me da este error **************/


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
Imágen de perfil de xve

no me multiplica el valor

Publicado por xve (557 intervenciones) el 12/01/2014 19:43:13
Hola Mario, creo que el problema esta en que los valores recogidos del formulario son caracteres, no valores... prueba a obtener los valores así:

1
2
var edad=parseInt($("#fedad").val());
var cant=parseInt($("#select_lista").val());

Coméntanos, ok?
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

no me multiplica el valor

Publicado por mario (23 intervenciones) el 12/01/2014 20:55:29
Ahora si, ahora sale bien, pero el problema k surje es el siguiente si ves la imagen que te pongo si elijo a antonio y pongo 2 el resultado es 90, si elijo luego a rosa y pongo 3 el resultado tb es 90, hay que limpiar variables? pero me gustaria saber independientemente del resultado si se puede mostrar en un mismo alert varias variables, me explico que me muestre el nombre y el resultado para asi saber si al menos me esta cogiendo a la persona que selecciono. muchas gracias por tu ayuda como siempre.



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

no me multiplica el valor

Publicado por xve (557 intervenciones) el 12/01/2014 21:17:03
Hola Mario, el problema lo tienes, en que todos tienen el mismo identificador (id), por lo que si no voy equivocado te coge siempre el primero.

Recuerda que el id, tiene que ser un valor único, y no debería de repetirse.

Aqui te adjunto tu código modificado, utilizando un id único para cada formulario, y pasando ese id único a la función cantidad(), para posteriormente obtener los valores de cada uno de los formularios.

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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
 
 
</head>
<script type="text/javascript">
    function cantidad(idform)
    {
        var edad=parseInt($("#"+idform+" input[name=fedad]").val());
        var cant=parseInt($("#"+idform+" select[name=lista]").val());
        var total=edad/cant;
        alert(total);
    }
</script>
<body>
 
 
<?php
session_start();
include ("conexion.php");
 
$id=$_POST['id'];
$nombre=$_POST['fnombres'];
$apellido=$_POST['fapellidos'];
$edad=$_POST['fedad'];
 
$_SESSION['carrito'][]=array('nombre'=>$nombre,'apellido'=>$apellido,'edad'=>$edad);
 
 
for($i=0;$i<count($_SESSION['carrito']);$i++)
{
    ?>
    <form action="" id="formulario<?php echo $i?>" name="" >
        <label>Nombre:</label><input type="text" size="30" name="fnombres" value="<?php echo $_SESSION['carrito'][$i]['nombre'].','; ?>"/>
        <label>Edad:</label><input type="text" size="30" name="fedad" value="<?php echo $_SESSION['carrito'][$i]['edad'].','; ?>"/>
        <select name="lista" onchange="cantidad('formulario<?php echo $i?>');">
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
        </select>
    </form><br/>
    <?php
}
?>
<input type="button" value="cerrar" onClick= "cierra();">
</body>
</html>

Coméntanos si te sirve, ok?
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