Foros del Web » Programando para Internet » Javascript »

Limitar seleccion multiple de un listbox

Estas en el tema de Limitar seleccion multiple de un listbox en el foro de Javascript en Foros del Web. Hola a todos, necesito limitar la cantidad de valores seleccionados dentro de un control listbox que se carga en forma dinámica con javascript, utilizando el ...
  #1 (permalink)  
Antiguo 02/09/2010, 06:19
 
Fecha de Ingreso: julio-2007
Mensajes: 24
Antigüedad: 16 años, 9 meses
Puntos: 0
Limitar seleccion multiple de un listbox

Hola a todos, necesito limitar la cantidad de valores seleccionados dentro de un control listbox que se carga en forma dinámica con javascript, utilizando el constructor "newOption".

Puntualmente necesito permitir que se seleccionen hasta 30 valores como maximo de un total de 200.

Agradezco de antemano cualquier ayuda que me puedan brindar con este tema que se me está complicando!!!

Saludos!!
  #2 (permalink)  
Antiguo 02/09/2010, 08:32
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Limitar seleccion multiple de un listbox

Hola

Sería algo así
Código Javascript:
Ver original
  1. var ulIndex = false;
  2. function funcion(sel) {
  3. var contSel = 0;
  4. for (var i = 0; i < sel.options.length; i++) {
  5. if (sel.options[i].selected == true) {
  6. contSel++;
  7. }
  8. }
  9.  
  10. if (parseInt(contSel) > 2) {
  11. alert('has superado el máximo');
  12. sel.options[ulIndex].selected = false;
  13. }
  14.  
  15. }
Código HTML:
Ver original
  1. <select multiple="multiple" size="4" id="elSel" onchange="funcion(this)">
  2. <option value="val" onmousedown="ulIndex = this.index">val</option>
  3. <option value="val" onmousedown="ulIndex = this.index">val</option>
  4. <option value="val" onmousedown="ulIndex = this.index">val</option>
  5. <option value="val" onmousedown="ulIndex = this.index">val</option>
  6. <option value="val" onmousedown="ulIndex = this.index">val</option>
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 02/09/2010, 09:54
 
Fecha de Ingreso: julio-2007
Mensajes: 24
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Limitar seleccion multiple de un listbox

Pero muchisimas gracias Adler !!!

Tuve que modificarlo un poco ya que completo mi select en forma dinamica con 'newOption', por lo que no podia llamar al evento 'onmousedown', solo al 'onchange', pero anduvo de maravillas!!!

Dejo la modificacion:

Código:
function cuentaSeleccionados()
{
	var limite=30;
	var seleccionados=Controlar();
	var sel=document.form1.select1;	

	if (seleccionados>limite)
	{
		var deselec = seleccionados - limite;
		var cuentades=0;
		
		alert("Ha superado el limite de "+limite);

		for (var i=0; i<sel.options.length; i++)
		{
			if ((sel.options[i].selected == true)&(cuentades<deselec))
			{
				sel.options[i].selected = false;
				cuentades++;
			}
		}	
	}
}
function Controlar()
{
	sel=document.form1.select1;
	var cuenta=0;
	for (var i = 0; i < sel.options.length; i++) 
	{
		if (sel.options[i].selected == true) 
		{
			cuenta++;
		}
	}
	return cuenta;
}
Lo que hago es simplemente deseleccionar los que haya seleccionado de más

Muchas gracias!!!

Etiquetas: limitar, listbox, seleccion
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 11:38.