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