Newsgroup: it.comp.lang.javascript
Titolo: problema modulo

Scusate la banalità (sono un principiante) ho un modulo e devo
verificare che quello che immette l'utente corrisponda a un elemento di
un array. Pensavo di introdurre una variabile che memorizzi il testo
dell'utente e poi di vedere se la stringa corrisponde a un elemento
dell'array ma a livello di codice come lo faccio il confronto?
Grazie in anticipo
HS



Qualcosa da cui partire:
<script type="text/javascript">
	var myvalues = ["just","a","test"];
 
	function checkForm(f){
		var 	bFound	= false,
			txt	= f.txtTest.value;
 
		for (var i=0;i<myvalues.length;i++)
			if ( myvalues[i] = txt )
				bFound = true;
 
		if ( bFound ){
			alert("trovato valore nell'array");
		}else{
			alert("nessun valore corrisponde");
		}
 
		return bFound;
	}
</script>
<form method="get" action="dest.htm" onsubmit="return checkForm(this)">
	<input type="text" name="txtTest" value="" />	
	<input type="submit" value="invia" />
</form>
La verifica viene effettuata quando l'utente tenta di inviare i dati
(onsubmit); se il valore inserito non corrisponde a nessun valore
dell'array, l'invio non viene eseguito.
Nota: la stringa "test" è diversa da "Test", quindi il controllo è case
sensitive. Se devi farne uno che non sia case sensitive, senza andare a
scomodare le Regular Expression (se non le conosci) ti basta portare i
valori da controllare tutti maiuscoli o minuscoli, tramite i metodi stringa
toUpperCase() o toLowerCase(). Nel caso specifico ti basterebbe sostituire:
	txt = f.txtTest.value;
con
	txt = f.txtTest.value.toLowerCase();
Ovviamente se non sei sicuro che myvalues contenga solo valori minuscoli,
devi apportare la stessa modifica nel check:
	if ( values[i].toLowerCase() == txt )
Spero che come traccia ti possa aiutare.
-- 
~ "When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 			if ( myvalues[i] = txt )
                                        ^^^
Per caso mi sono accorto che e' rimasto nella tastiera un uguale :)
if ( myvalues[i] == txt )

 Qualcosa da cui partire:
GRAZIE mille!
Sei stato gentilissimo!
txt è la variabile che memorizza il valore del "pulsante" (non conosco
bene la terminologia) txtTest?
e se devo aggiungere la risposta all'array, applico il metodo push
all'array  myvalues?
Grazie ancora.
Ciao!
HS

 Per caso mi sono accorto che e' rimasto nella tastiera un uguale :)
Eeh, nella prima stesura del post non c'era la variabile "txt", il controllo
veniva fatto direttamente sul value. Dopo ho pensato di aggiungere la
questione del case sensitive, e per facilitare la modifica successiva ho
riscritto la parte del codice precedente. Evidentemente mi č partito un
backspace di troppo :)


 all''header č indietro di un giorno.
OPS  ^_^;

 Grazie ancora.
De nada.


 Qualcosa da cui partire:
ciao,scusa ho un problema analogo: devo fare una specie di micro 
dizionario con un array di parole con la traduzione per ogni stringa 
(es: "latte : milk"), l'utente scrive la parola e gli deve venire la 
traduzione (la seconda parte della stringa).
Partendo dal tuo codice,sempre che quello che ho scritto sia giusto, che 
variabile metto dove ci sono i puntini?
<script type="text/javascript">
var parole = ["just : solo ", "a : un","test : test"];
wordsep=":";
arnr=0;
parole[arnr]='alfa'+wordsep+'beta';
wordsearch='alfa';
word=parole[arnr].split(wordsep);
 
function checkForm(f){
var 	bFound	= false,
txt	= f.txtTest.value;
 
for (var i=0;i<parole.length;i++)
  if ( wordsearch == txt )
      bFound = true;
 
if ( bFound ){
     alert("La traduzione č" + ...);
     }else{
     alert("nessun parola trovata");
}
 
     return bFound;
	}
</script>
e tecnicamente quel bFound cos'č?
Grazie in anticipo.
Saluti
L

 e tecnicamente quel bFound cos'è?
Una variabile che imposto a true nel caso in cui venga trovato l'elemento
all'interno dell'array. Viceversa, rimane a false.


 	alert("Parola non presente nel dizionario");
se si riduce cosě č meraviglioso!
Ma ho provato e non funge (ci sono un po' di problemi, forse anche con 
la parte in html?)
Thank you so much
L

 la parte in html?)
Beh, quella dipende da te. Cmq un esempio "funzionante" dovrebbe essere piů
o meno come questo:
<script type="text/javascript">
	var parole = {"just":"solo","a":"un","test":"test"};
 
	function translate(str){
		if (typeof parole[str]!="undefined")
			alert(parole[str])
		else
			alert("Parola non presente");
	}
</script>
<form>
	<input type="text" name="txtTest" />
	<input type="button" onclick="translate(this.form.txtTest.value)"
value="Traduci" />
</form>


 o meno come questo:
sei un mito! ;-)
se la parola non viene trovata devo chiedere all'utente di scrivere la 
traduzione e aggiungerla (con la parola nuova) all'array pricipale, 
pensavo anch'io di usare il metodo push sull'array ma non so bene come fare
comunque grazie mille di tutto
L

 pensavo anch'io di usare il metodo push sull'array ma non so bene come fare
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:push
E se non vuoi impazzire troppo per la maschera di inserimento della
traduzione, puoi utilizzare il confirm:
http://developer.mozilla.org/en/docs/DOM:window.confirm


 
http://developer.mozilla.org/en/docs/DOM:window.confirm
grazie ancora, ma prima di arrivare al confirm non capisco come pushare 
all'array la parola scritta e la traduzione:
<script type="text/javascript">
	var parole = {"just":"solo","a":"un","test":"test"};
 
 
	function translate(str){
		if (typeof parole[str]!="undefined")
			alert("La traduzione č: " + parole[str])
		else
			alert ("Parola non presente, se conosci il suo significato scrivilo e 
aggiungilo all'archivio");
	}
 
	function add(str) {
	   parole.push(....)
}
 
 
</script>
<form>
	<input type="text" name="txtTest" />
	<input type="button" onclick="translate(this.form.txtTest.value)"
value="Traduci" />
</form>
<form>
<input type="text" name="txtTest2" />
	<input type="button" onclick="add(this.form.txtTest2.value)"
value="Aggiungi" />
</form>
</body>


Bensì un oggetto. In quello stesso post ti ho anche sottolineato che l'uso
di proprietà di un oggetto tramite square bracket notation non deve essere
confuso con gli array.
Sempre in quel post, ti ho fatto vedere le varie equivalenze di codice a
livello di object initializer, nello specifico la ultima ti avrebbe chiarito
come aggiungere le "parole":
	parole[str]="nuova traduzione";
bada bene che se str esiste già, la "traduzione" precedente viene
sovrascritta.


 un array, 
porca miseria sono fregato!
Devo assolutamente farlo con l'array, ho provato riprendendo l'esempio 
di prima:
var parole = ["just : solo", "a : un","test : test"];
wordsep=":";
arnr=0;
parole[arnr]='alfa'+wordsep+'beta';
word=parole[arnr].split(wordsep);
a questo punto introduco la funzione translate e faccio un ciclo for su 
parole?
Ma come faccio poi a fare un if che mi verifichi la corrispondenza tra 
una variabile che mi memorizza il testo dell'utente e il valore alfa?
E poi come do come soluzione il valore beta?
Grazie ancora
L

 word=parole[arnr].split(wordsep);
Così stai solo facendo un gran puttanaio, aggiungendo proprietà custom
all'oggetto array. Hai le idee un po' confuse circa la gestione degli
oggetti in JS.


 oggetti in JS.
per usare un eufemismo :-)
non riesco a confrontare quello che l'utente scrive con la prima parte 
della stringa
var parole = new Array ("just : solo", "a : un","test : test");
wordsep=":";
arnr=0;
parole[arnr]='alfa'+wordsep+'beta';
wordsearch='alfa';
word=parole[arnr].split(wordsep);
come metto in relazione wordsearch con word e con quello che scrive 
l'utente?
Scusa se insisto ma non riesco a cavare il ragno dal buco (da un bel po')
grazie ancora di tutto
L

 Scusa se insisto ma non riesco a cavare il ragno dal buco (da un bel po')
Beh, essendo un esercizio ti avranno dato qualcosa su cui studiare,
immagino.


 immagino.
:-D
ho un libro su javascript ma risolvere con quello è un po' difficile
ciao!
L
P.S.
il bottone va bene così?
<input type="button" onclick="translate(this.form.txt.value)" 
value="Traduci" />

 value="Traduci" />
Si, ammesso che:
a) Tu abbia un campo di testo con attributo "name" uguale a "txt".
b) Il bottone si trovi nella stessa form del suddetto campo di testo.
