Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    90

    Form con scelte numerate ad eliminazione

    Ciao a tutti da un neofita dei form. Mi scuso per la domanda magari stupida ma ho questo "problema": vorrei creare un form in cui da piu' caselle di riepilogo si possano inserire valori facendo in modo che nella casella di riepilogo successiva il valore scelto nella precedente venga disabilitato. Mi spiego meglio! ...

    Ho una 5 caselle di riepilogo dove ho gli stessi 5 nomi di persone ripetute. (a,b,c,d,e). L'utente sceglie dalla prima casella di riepilogo "a" poi passa ala seconda dove le opzioni sono ancora 5 mentre io vorrei che ora la casella disabilitasse "a" e lasciasse libere le altre 4 per poi nella terza casella avere solo 3 opzioni "libere" poi 2 ed infine solo l'ultima.

    Il concetto è che voglio fare un form in cui si scelgano tra una ventina di nomi 7 od 8 nominativi ma con una priorità data dalla 1a scelta fino all'ultima evitando che l'utente ripeta lo steso nominativo per errore.

    So di essermi spiegato male...vediamo se riesco ad inventarmi un altro esempio: ecco...

    In un form voglio stlare una classifica di gradimento in cui l'utente mi deve indicare su 20 prodotti gli otto che preferisce dando anche la posizione di prefernza(primo, secondo, terzo, quarto)... Come faccio ad abbinare alla scelta anche la posizione?

    Grazie, scusate l'incasinamento...
    Ciao, J

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    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>

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    90
    Grazie Willybit! Sei grande! Immaginavo che la soluzione fosse per un "programmatore" (lo metto tra virgolette non per disprezzo, anzi, ma per differenziarlo da semplice utilizzatore di html di base come me!)
    Pur essendomi spiegato veramente da cani hai colto nel segno! Intendevo proprio le combo (caselle di riepilogo è il nome che gli assegna Frontpage, mi sa che passo a Dreamweaver prima o poi...)

    Il tuo form e'esattamente quello che volevo! Io non so programmare ma adesso mi guardo il codice javascript e lo modifico nelle variabili. Per quanto riguarda il discorso delle option che possono essere ricambiate alla fine...beh... metterò un avviso dicendo che in caso di errore occorre usare il Cancel (in fondo senza questo form gli utenti sbaglierebbero molto ma molto di più!), anche perchè nn ti voglio impegnare in una cosa cosa futile.
    Grazie davvero per la soluzione. Grazie mille
    Ciao, J

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    90
    Ciao Willybit. Grazie ancora. Ti chiedo di nuovo aiuto per una cosa che non riesco a superare nel form che ho creato utilizzando il tuo codice con i cambiamenti che volevo.
    Linko qui la pagina così vedi a che scopo "inutile" mi serviva! )

    http://www.wowol.com/totogpefantacostruttori.htm

    Ho un problema legato alla convalida dei campi che vorrei rendere obbligatori (nickname,circuito,outsider,pole,best_lap). Putroppo non conosco il modo di convalidare da Javascript (ho provato, giuro! ma non so proprio che farci, sono fesso!). Uso purtroppo Frontpage e la sua convalida (che per ora ho tolto dal codice) ma in questo modo il form smette di funzionare; cioè riesco comunque ad inviare i dati ma i campi delle listbox gestiti dagli array (Filtra this) non mostrano le options... Se tolgo la convalida (che NON metto ai campi su cui lavora il codice Javascript), il form riprendea funzionare. Mah...

    Grazie, senza fretta e per puro divertimento.
    Ciao ciao
    Jfk

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao Jfk,

    dovrebbe andarti bene questa funzione di controllo per il form
    codice:
    function Controlla(ff){
      cont=0
      for(x in aCombo)
        if(ff.elements[x].selectedIndex>0)cont++
      msg=''
      if(cont<8)msg+='- Selezionare 8 posizioni!\n'
      if(ff.Circuito.selectedIndex==0)msg+='- Selezionare il circuito!\n'
      if(ff.Pole.selectedIndex==0)msg+='- Selezionare Pole!\n'
      if(ff.Best_Lap.selectedIndex==0)msg+='- Selezionare Best Lap!\n'
      if(ff.Outsider.selectedIndex==0)msg+='- Selezionare Outsider!\n'
      if(ff.NICKNAME.value=='')msg+='- Inserire il Nickname!\n'
      if(msg!=''){
        alert(msg)
        return false
      }else return true
    }
    da richiamare all'onsubmit del form così
    codice:
    <form name="NomeForm" onsubmit="return Controlla(this)" ....

  6. #6
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Originariamente inviato da Jfk
    Per quanto riguarda il discorso delle option che possono essere ricambiate alla fine...beh... metterò un avviso dicendo che in caso di errore occorre usare il Cancel
    ogni volta che si seleziona una option viene tolta da tutte le altre combo... se rimetti "Posizione..." la option riappare su tutte le combo
    Originariamente inviato da Jfk
    Putroppo non conosco il modo di convalidare da Javascript (ho provato, giuro! ma non so proprio che farci, sono fesso!).
    Ma che stai a di'?? Altro che fesso! Hai modificato perfettamente il mio script per le tue esigenze. Se tu fossi fesso non ci saresti riuscito

    Aloha

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    90
    Ciao (Grazie!) ho inserito il codice ma non funziona. Mi disabilita le opzioni nei listbox e non genera l'alert... ti rimetto il link se vuoi vedere cosa intendo : http://www.wowol.com/totogpefantacostruttori2.htm
    Praticamente anche con la convalida Javascript mi restituisce lo stesso problema delle convalide da Frontpage...

    Io ho inserito il Javascript dopo il codice tra i tag <script ...> e </script> che mi avevi dato l'altra volta e l'onsubmit nel tag <form ... > . E' corretto?

    Grazie scusa l'infinito redio delle mie richieste... A proposito... ch elibro mi consigli per imparare JAvascript da zero e che poi spieghi anche casi particolari (ho due librucoli ma non dicono nulla)

    Ciao
    J

  8. #8
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao J

    hai fatto un errorino... se delimiti una stringa con gli 'apici' e vuoi rappresentare un apice all'interno della stringa devi anteporre un backslash... insomma... alla riga 118 invece di
    codice:
    '- Selezionare l'Outsider!\n'
    devi scrivere
    codice:
    '- Selezionare l\'Outsider!\n'

    per quanto rigurda il libro non saprei cosa consigliarti....
    facendo una ricerca con google ho trovato questo che mi pare possa andare bene per cominciare...
    poi qui nel forum puoi chiedere spigazioni

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    90
    Grazie! Sapevo che avrei combinato qualche pasticcio, ovviamente!
    Ora l'ho sistemato e grazie ad un libretto ho fatto la mia prima windows.open (e close) in Javascript. Lo so chè una cavolata per programmatori come te... ma vedere che funziona al primo colpo beh...dà una certa soddisfazione!
    Grazie mille per il preziosissimo aiuto (indispensabile).
    Ciao!
    Ps Se vuoi vedere il risultato finale, il link è quello UP
    Thank you very much
    J

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.