Bueno, pues al final lo conseguí, por lo menos la primera parte, la de saber que opción ha pulsado el usuario en un select múltiple.
Isabel, tu solución no funcionaba. Muestra siempre la opción seleccionada con el valor más alto, en vez de la opción pulsada.
Lo que he hecho es utilizar un array global, como ha dicho djaevi, aunque lo he hecho más sencillo que lo que él dice. Yo he hecho lo siguiente:
Código Javascript
:
Ver originalvar arrayOpciones = new Array(); //Es el array global
function opcionSelected(){
var opciones = document.getElementById("datos").options;
for (var i=0; i<opciones.length; i++){
var opcion = opciones[i].value;
if (opciones[i].selected){
if (!enArray(opcion)){ //enArray() busca si opcion está en arrayOpciones
arrayOpciones[arrayOpciones.length]=opcion;
alert("Has señalado la opción" + opcion);
}
}
}
}
y el HTML
Código HTML:
Ver original<select multiple="multiple" id="datos" name="info" onchange="opcionSelected()">
De todas formas, como dije, esto parece que es más lógico hacerlo con checkbox, pero como ya tenía otros checkbox en el formulario quería hacerlo con una lista.
Gracias a los dos. Un saludo.