Ciao brutusin,

dovresti memorizzare da qualche parte le options selezionate e all'onchage della select conti se le options selezionate superano il numero massimo consentito, in tal caso reimposti le options selezionate con quelle memorizzate.... è più complicato a spiegare che a fare
codice:
<script type="text/javascript">
var arrSelect=new Array(); //array definito globalmente per memorizzare le options selezionate

function MaxOption(ss,n){
	var i,tot=0
	for(i=0;i<ss.options.length;i++)
		if(ss.options[i].selected)tot++
	if(tot>n)
		for(i=0;i<ss.options.length;i++)
			ss.options[i].selected=arrSelect[ss.name][i]
	var opt=new Array();
	for(i=0;i<ss.options.length;i++)
		opt[opt.length]=ss.options[i].selected
	arrSelect[ss.name]=opt
}
</script>
da usare così
codice:
<select name="NomeSelect" multiple="true" size="10" onchange="MaxOption(this,5)">
	 <option value="1">uno</option>
	 <option value="2">due</option>
	 <option value="3">tre</option>
	 <option value="4">quattro</option>
	 <option value="5">cinque</option>
	 <option value="6">sei</option>
	 <option value="7">sette</option>
	 <option value="8">otto</option>
	 <option value="9">nove</option>
	 <option value="10">dieci</option>
</select>
per deselezionare tutti gli elementi devi clickare sulla option selezionata tenendo premuto il tasto [Ctrl]