JavaScript - Contar numero de elementos selelccionados en select multiple

   
Vista:

Contar numero de elementos selelccionados en select multiple

Publicado por Bladimir (7 intervenciones) el 11/02/2016 15:29:02
Hola a todos. Tengo un select multiple donde el usuario debe seleccionar uno o varios item. El asunto es que que quiero obtener el numero de elementos seleccionados pero no lo consigo. Dependiendo del numero de elementos seleccionados aparecerá un texto en un input tipo text. En concreto el codigo que estoy usando es el siguiente:
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
function numerolee(){
      var lista = document.elegir.Lee.selectedOptions;
      var totalt;
      var total=0;
      for(var i=0;i<lista.length;i++){
  		   valorg=lista[i].value;
  		if (valorg=1)
  			total+=1;
  		if (valorg=2)
  			total+=1;
  		if (valorg=3)
  			total+=1;
  		if (valorg=4)
  			total+=1;
  		if (valorg=5)
  			total+=1;
  		if (valorg=6)
  			total+=1;
 
  	}
    	if (total =0){
             totalt = "Clase I. 0,4 a 0,5% de complicaciones.";
    	}
    	if (total =1) {
            totalt = "Clase II. 0,9 a 1.3% de complicaciones";
   	}
    	if (total =2){
            totalt = "Clase III. 4,9 a 7% de complicaciones";
   	}
    	if (total >2){
            totalt = "Clase IV. 9 a 11% de complicaciones.";
   	}
      document.getElementById("nlee").value = totalt;
  }
El valor de cada item es 1, pero siempre aparece en el input "Clase III. 4,9 a 7% de complicaciones"; independientemente del numero de elementos seleccionados. No entiendo porque. alguna ayuda se agradece. Saludos.
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

Contar numero de elementos selelccionados en select multiple

Publicado por arck (74 intervenciones) el 11/02/2016 15:35:40
¿podrías poner también el html?
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

Contar numero de elementos selelccionados en select multiple

Publicado por Bladimir (7 intervenciones) el 11/02/2016 15:53:17
El select se forma a partir de php. El codigo es:
1
2
3
4
5
6
7
echo "<select name='Lee' multiple='multiple' onchange='numerolee()'> ";
	$link = mysqli_connect("localhost", "root", "", "Consulta") or die ('Error de conexion: ' . mysqli_error());
	$result= mysqli_query($link,"SELECT PARAMETRO, VALOR FROM RIESGO WHERE ESCALA='Lee'");
	while ($row = mysqli_fetch_array($result)){
		echo "<option value='$row[1]'>$row[0]</option>";
	}
echo "</select>";
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

Contar numero de elementos selelccionados en select multiple

Publicado por arck (74 intervenciones) el 11/02/2016 16:35:00
php no manejo, ¿me puedes pasar el html de la pagina ya visualizada?
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

Contar numero de elementos selelccionados en select multiple

Publicado por Bladimir (7 intervenciones) el 11/02/2016 16:58:07
1
2
3
4
5
6
7
8
9
10
<select onchange="numerolee()" multiple="multiple" name="Lee">
 
    <option value="1">HTA</option>
    <option value="1">DM</option>
    <option value="1">Infarto del miocardio</option>
    <option value="1">ICC</option>
    <option value="1">EVC</option>
    <option value="1">IRA</option>
 
</select>
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

Contar numero de elementos selelccionados en select multiple

Publicado por arck (74 intervenciones) el 11/02/2016 19:57:27
A ver si esto te vale

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
<html>
	<head>
 
	</head>
	<body>
		<select id="lee" onchange="numerolee()" multiple="multiple">
 
			<option value="1">HTA</option>
			<option value="1">DM</option>
			<option value="1">Infarto del miocardio</option>
			<option value="1">ICC</option>
			<option value="1">EVC</option>
			<option value="1">IRA</option>
 
		</select>
 
		<script type="text/javascript">
			function numerolee(){
				var lista = document.getElementById("lee");
				var totalt;
				var total=0;
				console.log(lista.length);
				for(var i=0;i<lista.length;i++){
					if (lista[i].value == 1 && lista[i].selected){
						total+=1;
					}
				}
 
				if (total==0){
					totalt = "Clase I. 0,4 a 0,5% de complicaciones.";
				}
				if (total==1) {
					totalt = "Clase II. 0,9 a 1.3% de complicaciones";
				}
				if (total==2){
					totalt = "Clase III. 4,9 a 7% de complicaciones";
				}
				if (total >2){
					totalt = "Clase IV. 9 a 11% de complicaciones.";
				}
 
				console.log(totalt);
			}
		</script>
	</body>
</html>
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

Contar numero de elementos selelccionados en select multiple

Publicado por Bladimir (7 intervenciones) el 11/02/2016 20:54:44
No me resulta. No hace nada. El asunto está en obtener la suma total de los elementos selelccionados. Eso es lo que no he podido obtener.
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

Contar numero de elementos selelccionados en select multiple

Publicado por arck (74 intervenciones) el 11/02/2016 21:39:29
si le das al f12 veras como te da los valores que en el codigo están con console.log()
con la salida de valor totalt
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

Contar numero de elementos selelccionados en select multiple

Publicado por Bladimir (7 intervenciones) el 12/02/2016 00:07:55
Me dice: TypeError: lista is null
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

Contar numero de elementos selelccionados en select multiple

Publicado por Bladimir (7 intervenciones) el 12/02/2016 00:09:01
Me dice: TypeError: lista is null
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

Contar numero de elementos selelccionados en select multiple

Publicado por Bladimir (7 intervenciones) el 12/02/2016 03:13:47
Gracias arck por tu interes. Ya lo resolví. Modifiqué el codigo original y quedó asi:
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
function numerolee(){
      var lista = document.elegir.Lee.selectedOptions;
      var totalt;
      var total=0;
      for(var i=0;i<lista.length;i++){
  		valorg=lista[i].value;
  		if (valorg==1)
  			total+=1;
  		if (valorg==2)
  			total+=1;
  		if (valorg==3)
  			total+=1;
  		if (valorg==4)
  			total+=1;
  		if (valorg==5)
  			total+=1;
 
  	}
    	if (total <1){
             totalt = "Clase I";
    	}
    	if ((total >=1) && (total <2)){
            totalt = "Clase II";
   	}
    	if ((total >=2) && (total <3)){
            totalt = "Clase III";
 
   	}
    	if (total >=3){
            totalt = "Clase IV";
 
   	}
      document.getElementById("nlee").value = totalt;
}
Ojalá a alguien tambien ayude. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Contar numero de elementos selelccionados en select multiple

Publicado por arck (74 intervenciones) el 12/02/2016 09:09:52
si te fijas en el select cambie el name por el id
Seguramente no copiaste el código, por eso te daría lista is null.

repasa un poco el código porque es una tontería tener tanto if dentro del for ya que todas las opciones tienen valor 1.

Y comprueba que funcione seleccionando uno o mas ya que en el caso del for estás sumando los valores sin ver si esta seleccionado o no.

Suerte.
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