Hola,
Ocultar un OPTION no se puede
Asi que aun puedes "remover" el elemento o "deshabilitarlo" y te hice una funcion que segun un parametro hace una cosa o la otra
Código Javascript
:
Ver original<form action="" method="">
Select 1<br/>
<select name="elementos1" multiple >
<option value="zapatos">zapatos</option">
<option value="utiles" >utiles</option">
<option value="pizarron" >pizarron</option">
</select>
<p/>
Select 2<br/>
<select name="elementos2" multiple >
<option value="mochila">mochila</option">
<option value="utiles" >utiles</option">
<option value="pizarron" >pizarron</option">
</select>
</form>
<p/>
<a href="javascript:limpiarSelect1('disable');">Deshabilitar options</a><br/>
<a href="javascript:limpiarSelect1('delete');">Borrar options</a>
<script>
/*
@param modo 'delete' ó 'disable'
*/
function limpiarSelect1(modo)
{
modo = modo || 'delete';
if (modo!='delete' && modo!='disable')
throw new Error('Modo incorrecto');
sel1 = document.getElementsByName('elementos1')[0];
sel2 = document.getElementsByName('elementos2')[0];
conj1 = sel1.getElementsByTagName('option');;
conj2 = sel2.getElementsByTagName('option');;
// recorro el primer select
for (var i=0; i<conj1.length;i++)
{
// recorro el segundo select
for (var j=0; j<conj2.length;j++)
if (conj1[i].value==conj2[j].value)
{
console.log(modo+' para '+conj1[i].value);
if (modo=='delete')
{
sel1.removeChild(conj1[i]);
i--; // toca re-ajustar indice luego de matanza :)
}else
conj1[i].disabled='disabled'
}
}
}
</script>