Newsgroup: it.comp.lang.javascript
Titolo: Combobox

Salve a tutti, innanzitutto grazie per le risposte grandiose e
puntuali....
Vi chiedo una cortesia, se io faccio una scelta da una combobox con
html tipo questa:
<select name="Alimento" multiple>
     <optgroup label="Pane">
          <option value="Azimo" selected>html
          <option value="A Legna">css
          <option value="Piadina">javascript
     </optgroup>
     <optgroup label="Pesce">
          <option value="Orata">php
          <option value="Merluzzo">jsp
     </optgroup>
 </select>
Come faccio in base alla selezione che ho fatto a far uscire una label
di un campo di input piuttosto di un'altro usando JavaScript?
Esempio, se sceglie nella lista l'alimento Pane (qualsiasi tipo) deve
uscire fuori una label di un campo di input dove la scritta sarà
"Costo al kg del pane", invece nel caso in cui scelga l'alimento pesce
deve inserire "Costo al kg del pesce".
Diciamo che è un po + complicata di così ma questo è l'esempio....
Potete per favore scrivermi un pezzo di codice che fa questa cosa?
Spero di essere stato chiaro.
Grazie ancora
Carlo

 Diciamo che è un po + complicata di così ma questo è l'esempio....
Dipende quindi dal contesto.
Per esempio potresti onchange eseguire una function, che:
 - legge la option selezionata:
 
http://devedge-temp.mozilla.org/library/manuals/2000/javascript/1.3/
reference/option.html
 - scrive il valore appropriato a seconda della option scelta:
 document.getElementById("miaLabel").innerHTML=tuascritta
Controdomanda: come sai, a seconda del valore/optgroup scelto, cosa 
scrivere?


Ti dico bene come è la questione.
facciamo l'esempio reale.
Nella lista, l'utente sceglie quello che è lo stato di un'azione
esecutiva nei confronti di un debitore.
Quindi sceglierà: Se l'azione è nella fase della CTU, se l'azione è
nella fase dell'asta immobiliare oppure se è nella fase dell'asta
aggiudicata.
Nel caso della CTU, l'importo da inserire è quello della CTU, nel caso
dell'asta l'importo sarà quello della base asta e nel caso di
aggiudicazione l'importo sarà quello dell'aggiudicazione.
Quindi il campo è sempre un campo importo. Volevo cambiare la label
solo per non far cadere colui che inserisce il dato nell'errore.

 wrote:

Scusami se ti scoccio ancora. Diciamo che quello che dici te è
perfetto...ma dato che non ho capito come fare non riesco a dirtelo
con sicurezza :-)
Ti posso chiedere la cortesia di farmi un esempio più pratico (con
codice)....
Scusami ancora

 far cadere colui che inserisce il dato nell'errore.
Occorre trovare un modo per sapere, a seconda della voce, cosa 
visualizzare. Il discorso delle optgroup te lo sconsiglio, appunto perché 
IE, in versioni anche non vecchissime, non lo riconosce (quindi, a parte 
non vedere le distinzioni a gruppi a video, non possiamo usare javascript 
per cercare la optgroup a cui appartiene)
Mi vengono in mente varie strade.
La prima: se sono poche voci potresti creare un array con i rispettivi 
valori, del tipo (var globale):
 voci=[];
 voci[0]="testo per prima option";
 voci[1]="testo per seconda option"
 ...
Onchange della select scrivi la voce opportuna; del tipo:
 <tuaselect onchange="scrivi(this)">...
function scrivi(sender) {
	document.getElementById("tuodiv").innerHTML=voci
[sender.selectedIndex];
}
http://devedge-temp.mozilla.org/library/manuals/2000/javascript/1.3/
reference/select.html#1193420