Ver Mensaje Individual
  #6 (permalink)  
Antiguo 05/05/2005, 14:42
kepawe
 
Fecha de Ingreso: agosto-2004
Mensajes: 157
Antigüedad: 20 años, 3 meses
Puntos: 5
Hola cometron, JavierB y cometron.

Si optas por un select multiple tal vez quieras establecer el máximo y el mínimo de opciones que se pueden seleccionar, el script que te envio puedes establecerlo, para ello me sirvo de la posibilidad de añadir propiedades a los elementos de un form, he añadido tres propiedades, máximo permitido, mínimo y el nombre al que no referimos al campo, para que funcione debes establecer las tres propiedades, si no estableces las propiedades el select no es obligatorio, también decir que puedes verificar tantos select como quieras.

Código:
<html>
<head>
<title></title>

<script language="JavaScript" type="text/javascript">
<!--



function current_form(current_form) {
	var error_message =""
	// añadimos propiedades a select multiples
	current_form["multiple_select"].field_name = "ANIMALES";
	// maximo de elementos seleccionados permitidos
    current_form["multiple_select"].max_selected = 3;
	// minimo  permitidos
	current_form["multiple_select"].min_selected = 2;
	// si por ejemplo queremos que el usario seleccion una opcion lo hariamos así
	current_form["multiple_select1"].field_name = "COCHES";
	current_form["multiple_select1"].max_selected = 1;
	current_form["multiple_select1"].min_selected = 1;
	// recorremos todo los campos
	for(var ctr1 = 0; field_m_select = current_form[ctr1];ctr1++){
		// si es un select multiple y hemos añadido las propiedades el campo es obligatorio
		if(field_m_select.type == "select-multiple" && field_m_select.max_selected){
			(function(){
			var cuantos = 0;
			for (var ctr = 0; opt = field_m_select.options[ctr]; ctr++) {
			   if (opt.selected) cuantos ++
			}
			
			if (cuantos > field_m_select.max_selected || cuantos < field_m_select.min_selected ){
			if(field_m_select.max_selected == field_m_select.min_selected){
			error_message += "En el campo " + field_m_select.field_name + " debe seleccionar " + field_m_select.min_selected + 
							 (field_m_select.min_selected > 1 ?" opciones ":" opción")+".";					
			}
			else{
			error_message += "En el campo " + field_m_select.field_name + " debe seleccionar un minimo de " + field_m_select.min_selected + 
							" y un máximo de " + field_m_select.max_selected + (field_m_select.max_selected > 1 ? " opciones":" opción")+ ".\n";
			}
			}
			})(field_m_select);
		}
	}
	// Si el mensaje no está vacío mostramos el error
	if(error_message != "") alert("ERROR\n\n" + error_message)
	else alert("Enviamos el formulario.")
    
}

//-->
</script>

</head>
<body>

<form>

<br>
<b>ANIMALES <sup>Obligatorio</sup></b>
<br>Seleccione un mímimo de 2 y un máximo de 3 opciones.<br>

<select name="multiple_select" size="6" multiple="multiple" style="width:150px;">
<option>Perro</option>
<option>Canario</option>
<option>León</option>
<option>Oveja</option>
<option>Gato</option>
<option>Elefante</option>
</select>

<br><b>COCHES <sup>Obligatorio</sup></b>

<br>Seleccione solo una opción.<br>

<select name="multiple_select1" size="3" multiple="multiple" style="width:150px;">
<option value="mercedes">Mercedes</option>
<option value="seat">Seat</option>
<option value="ford">Ford</option>
</select> 
<br><b>LETRAS <sup>No obligatorio</sup></b><br>
<select name="multiple_select2" size="3" multiple="multiple" style="width:150px;">
<option value="a">a</option>

<option value="b">b</option>
<option value="c">c</option>
</select> 
<br>
<input type="button"
       value="Enviar"
	   size ="40"
       onClick="current_form(this.form)">	   
</form>

</body>
</html>
Bueno, espero que te sirva.
Saludos