Ciao Jfk,
alla faccia della domanda stupida! La cosa è abbastanza tosta...
Cosa intendi per "caselle di riepilogo"? Io ho inteso delle combo (il tag <select>)
Ci sono un tot di combo tutte uguali. Una volta selezionato qualcosa da una di queste, bisogna eliminare l'option corrispondente in tutte le altre.
Fin qua sarebbe anche semplice... ma se poi si cambia la selezione in una già selezionata? Bisogna rimettere in tutte le combo la vecchia selezione e togliere la nuova... e quando rimetti una option dove la metti? Alla fine? Bisognerebbe anche riordinare l'elenco... insomma un bel casino... almeno per me
te lo dico perché per farlo non c'ho 10 minuti...
dimmi un po' se è questo quello che intendevi
codice:
<HTML>
<HEAD>
<script language="javascript">
function obj(testo,valore){
this.testo = testo
this.valore = valore
}
var arr = new Array()
arr[arr.length] = new obj('A',1)
arr[arr.length] = new obj('B',2)
arr[arr.length] = new obj('C',3)
arr[arr.length] = new obj('D',4)
arr[arr.length] = new obj('E',5)
arr[arr.length] = new obj('F',6)
arr[arr.length] = new obj('G',7)
arr[arr.length] = new obj('H',8)
arr[arr.length] = new obj('I',9)
function AggiungiOption(cc,testo,valore){
cc.options[cc.options.length]=new Option(testo,valore)
}
function EliminaOption(cc,testo,valore){
da = (cc.options.length-1)
for(i=da;i>=0;i--){
if(cc.options[i].text==testo && cc.options[i].value==valore){
cc.options[i]=null
}
}
}
function objCombo(nome,ultimaOption){
this.nome = nome
this.ultimaOption = ultimaOption
}
var numeroCombo = 4
var aCombo = new Array()
aCombo['combo1']=new obj('','')
aCombo['combo2']=new obj('','')
aCombo['combo3']=new obj('','')
aCombo['combo4']=new obj('','')
function CreaCombo(){
for(j in aCombo)
for(i=0;i<arr.length;i++){
cc = document.NomeForm.elements[j]
AggiungiOption(cc,arr[i].testo,arr[i].valore)
}
}
function OrdinaPerText(cc){
ss = cc.options[cc.selectedIndex]
ordina = true
while(ordina){
ordina=false
for(i=1;i<cc.options.length;i++){
aa = cc.options[i-1]
bb = cc.options[i]
if(aa.value!='' && bb.value!='' && aa.text>bb.text){
ordina=true
cc.options[i-1] = new Option(bb.text,bb.value)
cc.options[i] = new Option(aa.text,aa.value)
}
}
}
for(i=0;i<cc.options.length;i++)
if(cc.options[i].text==ss.text && cc.options[i].value==ss.value)
cc[i].selected=true
}
function Filtra(cc){
tt = cc.options[cc.selectedIndex].text
vv = cc.options[cc.selectedIndex].value
for(j in aCombo){
if(j!=cc.name){
if(vv!=''){
EliminaOption(document.NomeForm.elements[j],tt,vv)
OrdinaPerText(document.NomeForm.elements[j])
}
oo = aCombo[cc.name]
if(oo.valore!=''){
AggiungiOption(document.NomeForm.elements[j],oo.testo,oo.valore)
OrdinaPerText(document.NomeForm.elements[j])
}
}
}
aCombo[cc.name]=new obj(tt,vv)
if(vv=='')cc.selectedIndex=0
}
</script>
<TITLE>Combo esclusive per Jfk</TITLE>
</HEAD>
<BODY onload="CreaCombo()">
<form name="NomeForm">
<select name="combo1" onchange="Filtra(this)">
<option value="">Seleziona il primo...</option>
<option value="">-----------------------</option>
</select>
<select name="combo2" onchange="Filtra(this)">
<option value="">Seleziona il secondo...</option>
<option value="">-----------------------</option>
</select>
<select name="combo3" onchange="Filtra(this)">
<option value="">Seleziona il terzo...</option>
<option value="">-----------------------</option>
</select>
<select name="combo4" onchange="Filtra(this)">
<option value="">Seleziona il quarto...</option>
<option value="">-----------------------</option>
</select>
</form>
</BODY>
</HTML>