Condizione if su valore array

il_betto

Utente Attivo
23 Mar 2007
42
0
0
Ciao a Tutti,
mi spiace non venire a capo di una condizione if che mi fa un po' arrabbiare ...

Ho 2 menu' a tendina correlati,
vorrei che SOLO quando uno seleziona email1 nel primo menu',
e SOLO quando sceglie l' opzione "Free Text",
compaia a fianco del secondo menu' a tendina la label "Description" con relativa textarea

Adesso, quando uno sceglie email1,
per qualsiasi opzione del secondo menu' che sceglie, compare sempre la textarea ...
come mai ???

Grazie come sempre in anticipo !!!


<head>
<Script Language="JavaScript">
var sum_db = new Object()
sum_db["email1"] = [{value:"I01 - Problemi di primo livello", text:"I01 - Problemi di primo livello"},
{value:"I02 - Problemi RDM", text:"I02 - Problemi RDM"},
{value:"Free Text", text:"Free Text "}];
sum_db["email2"] = [{value:"I03 - Varie", text:"I03 - Varie"}];
//
//
function setIssue(chooser) {
var newElem;
var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;
var Iss_Chooser = chooser.form.elements["iss_sum"];
while (Iss_Chooser.options.length) {
Iss_Chooser.remove(0);
}
var choice = chooser.options[chooser.selectedIndex].value;
var db = sum_db[choice];
if (choice == "email1") {
newElem = document.createElement("option");
newElem.text = "Choose an issue ...";
newElem.value = "Choose Issue ...";
Iss_Chooser.add(newElem, where);
}
for (var i = 0; i < db.length; i++) {
newElem = document.createElement("option");
newElem.text = db.text;
newElem.value = db.value;
Iss_Chooser.add(newElem, where);
if ((choice == "email1") && (db.text.indexOf('Free Text')==0)) { document.getElementById("label_des").style.display=""; }
else { document.getElementById("label_des").style.display="none"; }
}
}
//
</script>
</head>


<body>
<form>
<select size="1" name="mess" id="mess" onchange="setIssue(this)">
<option value="email1" selected>email1</option>
<option value="email2">email2</option>
</select>
....
....
<select id="iss_sum" name="iss_sum">
<option value="<%=objRS("Issue_Summary")%>" selected><%=objRS("Issue_Summary")%></option>
</select> <label for="iss_des" id="label_des" style="display:none; vertical-align:top">Description:<textarea id="iss_des" name="iss_des"><%=objRS("Issue_Description")%></textarea>
</label>
 

il_betto

Utente Attivo
23 Mar 2007
42
0
0
Il mio problema e':

come dire che, solo se uno ha selezionato email1, e seleziona solo la voce del secondo menu' "Free Text" allora compare la textare con la label Description ...

Per ora ho provato cosi' senza risultato:

if ((choice == "email1") && (db.selected=='Free Text' )) { document.getElementById("label_des").style.display=""; }
else { document.getElementById("label_des").style.display="none"; }
}


E' questa condizione che non va bene .. .come dire .. se scelgo solo quest' opzione del menu' contenente "Free Text" ???
 

il_betto

Utente Attivo
23 Mar 2007
42
0
0
Problema risolto !!!

Ho provato a mettere un alert all' interno del cliclo if e del ciclo for per vedere quale valore di variabile mi ritornava, in questo modo:

for (var i = 0; i < db.length; i++) {
newElem = document.createElement("option");
newElem.text = db.text;
newElem.value = db.value;
Iss_Chooser.add(newElem, where);
if ((choice == "email1") { alert db.value; }
}
alert (newElem.value); e poi alert sul valore di Iss_Chooser
}

Ho capito che nel mio modo, all' interno della funzione setIssue(chooser), non ci sarei mai riuscito perche' non potevo fare un confronto tra db e un valore "Free Text" del secondo menu' che dovevo ancora selezionare ...

Cosi', attraverso l' alert, che mi ritornava un valore vuoto di variabile,
ho capito quello che forse mi si voleva dire prima, ma che purtroppo non ero in grado di recepire:

Ho definito cosi' nella head una nuova funzione

function setLabel() {
if (document.forms[0].iss_sum.options[document.FrontPage_Form1.iss_sum.selectedIndex].text.match(/^Free/)) {
document.getElementById("label_des").style.display=""; }
else { document.getElementById("label_des").style.display="none"; }
}

che ho richiamato dalla seconda select menu

<select id="iss_sum" name="iss_sum" onchange="setLabel()" >
<option value="<%=objRS("Issue_Summary")%>" selected><%=objRS("Issue_Summary")%></option>
</select> <label for="iss_des" id="label_des" style="display:none; font-weight: bold; vertical-align:top">Description:
<font face="Gill Sans MT">
<textarea id="iss_des" name="iss_des"><%=objRS("Issue_Description")%></textarea></font>
</label>

Ed il gioco e' fatto !! Era quello che volevo !!!

Sono felicissimo e cmq rimane sempre il fatto che, attraverso la collaborazione di tutti, le soluzioni si ottengono anche perche' unendo le varie idee si raggiungono alti risultati

Per riassumere il tutto, posto tutto il codice funzionante:

<head>
<Script Language="JavaScript">
var sum_db = new Object()
sum_db["email1"] = [{value:"I01 - Problemi di primo livello", text:"I01 - Problemi di primo livello"},
{value:"I02 - Problemi RDM", text:"I02 - Problemi RDM"},
{value:"Free Text", text:"Free Text "}];
sum_db["email2"] = [{value:"I03 - Varie", text:"I03 - Varie"}];
//
//
function setIssue(chooser) {
var newElem;
var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;
var Iss_Chooser = chooser.form.elements["iss_sum"];
while (Iss_Chooser.options.length) {
Iss_Chooser.remove(0);
}
var choice = chooser.options[chooser.selectedIndex].value;
var db = sum_db[choice];
if (choice == "email1") {
newElem = document.createElement("option");
newElem.text = "Choose an issue ...";
newElem.value = "Choose Issue ...";
Iss_Chooser.add(newElem, where);
}
for (var i = 0; i < db.length; i++) {
newElem = document.createElement("option");
newElem.text = db.text;
newElem.value = db.value;
Iss_Chooser.add(newElem, where);
}
}
//
function setLabel() {
if (document.forms[0].iss_sum.options[document.FrontPage_Form1.iss_sum.selectedIndex].text.match(/^Free/)) {
document.getElementById("label_des").style.display=""; }
else { document.getElementById("label_des").style.display="none"; }
}
//
</script>
</head>


<body>
<form>
<select size="1" name="mess" id="mess" onchange="setIssue(this)">
<option value="email1" selected>email1</option>
<option value="email2">email2</option>
</select>
....
....
<select id="iss_sum" name="iss_sum" onchange="setLabel()">
<option value="<%=objRS("Issue_Summary")%>" selected><%=objRS("Issue_Summary")%></option>
</select> <label for="iss_des" id="label_des" style="display:none ; vertical-align:top">Description:<textarea id="iss_des" name="iss_des"><%=objRS("Issue_Description")%></textarea>
</label>
 
Discussioni simili
Autore Titolo Forum Risposte Data
Y verificare condizione dopo esecuzione della funzione Programmazione 0
M Update con condizione SQL PHP 7
maxnegri Contare sessioni aperte e creare condizione PHP 1
G Campo Not null a condizione MySQL 8
S [Javascript] Problema con condizione "if" Javascript 2
D Mailchimp - Possibile inserire doppia condizione per i triggers? Email Marketing 0
N [PHP] Controllare condizione ciclo While PHP 9
D [PHP] Update non trasferisce condizione where PHP 1
P [Javascript] Inserire una nuova condizione in una funzione Javascript 3
R [MS Access] CONDIZIONE CHE CAMBIA PROPRIETA' DI UNA CONTROLLO MS Access 7
giancadeejay inserire condizione php PHP 6
R [Javascript] Geolocalizzazione con condizione Javascript 8
C Colorare righe tabella tramite condizione Java 5
A Redirect con condizione Javascript 2
pup3770 Passare parametro ad un'altra pagina in base alla condizione PHP 3
elpirata Stabilire condizione if ed else in query php PHP 14
K Array_shift e condizione PHP 1
M condizione MS Access 3
L Condizione if PHP 1
B Condizione if html HTML e CSS 1
felino [Smarty] Stampa di una tabella dinamica, condizione su una cella PHP 1
M Redirect con condizione precisa PHP 2
S Blocco campo per condizione vera MS Access 4
F exit condizione if jQuery 1
M nascondere la colonna di una tabella in base ad una condizione PHP 8
felino Array: eliminare gli elementi che soddisfano una condizione PHP 5
felino Selezionare le colonne con una certa condizione PHP 2
C condizione if convertibile in array PHP 1
T problema ciclo + condizione if PHP 1
C modifica condizione IF in mudulo OSTimer per Joomla PHP 0
T Problema condizione di un form con mysql PHP 15
L Blocco if | Condizione sul colore Javascript 0
A Radio button con condizione link Javascript 6
I Insert Into con condizione PHP 9
A condizione di una select PHP 6
D Non funziona la condizione IF PHP 2
D URGENTE: condizione Javascript da pagina ASP Classic ASP 5
G Valore del campo id maggiore di 9999 MySQL 0
M Leggere in un report il valore di una casella combinata di una maschera Database 0
otto9due Leggere valore da array multidimensionale a chiavi dinamiche PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
L Ripetere Campi disabilitando input in riferimento ad un valore della select jQuery 0
C ACCESS Aprire maschera se valore non presente in una combo MS Access 7
R valore value di un id da passare in chiamata ajax Ajax 3
napuleone modificare il valore dellascroll bar di webkit HTML e CSS 8
R Aprire maschera con Openform filtrando un campo testuale con un valore recuperato da un'altra maschera MS Access 10
D Visualizzazione pagina basata sul valore di un campo del database PHP 2
D controllare valore in tabella mysql PHP 0
M Estrarre valore con SELECT COUNT PHP 0
A passara valore name da .autocomplate Javascript 2

Discussioni simili