Newsgroup: it.comp.lang.javascript
Titolo: Help for a newbie! :(

Ciao a tutti,
non ho mai usato molto javascript, ma ora sto avvicinandomici per
cercare di semplificare un po' la vita agli utenti che utilizzeranno
un'interfaccia (piuttosto vasta) che sto scrivendo.
Tra le varie parti un po' prolisse ho un popup con vari checkbox, uno
per ogni lettera dell'alfabeto; vorrei fare in modo che premendo la
lettera venisse selezionato (o deselezionato) il campo corrispondente.
Dopo un po' sono riuscito a partorire questa funzione:
function sel(){
	alfabeto = new Array();
	alfabeto[65] = "A";
	alfabeto[66] = "B";
	alfabeto[67] = "C";
	alfabeto[68] = "D";
	alfabeto[69] = "E";
	alfabeto[70] = "F";
	alfabeto[71] = "G";
	alfabeto[72] = "H";
	alfabeto[73] = "I";
	alfabeto[74] = "J";
	alfabeto[75] = "K";
	alfabeto[76] = "L";
	alfabeto[77] = "M";
	alfabeto[78] = "N";
	alfabeto[79] = "O";
	alfabeto[80] = "P";
	alfabeto[81] = "Q";
	alfabeto[82] = "R";
	alfabeto[83] = "S";
	alfabeto[84] = "T";
	alfabeto[85] = "U";
	alfabeto[86] = "V";
	alfabeto[87] = "W";
	alfabeto[88] = "X";
	alfabeto[89] = "Y";
	alfabeto[90] = "Z";
	alfabeto[13] = "INVIO";
	var lett = alfabeto[window.event.keyCode];
	if(lett!=undefined) {
		if(lett=="INVIO") {
			document.emp_qual.submit();
		} else {
			var chk = eval('document.emp_qual.' + lett + '.checked');
			if(chk==true) eval('document.emp_qual.' + lett + '.checked=false;');
			else if(chk==false) eval('document.emp_qual.' + lett +
'.checked=true;');
		}
	}
}
che richiamo dal body con onKeyUp.
Il problema è che funziona con IE e non con Firefox!!! Sembra quasi
che Firefox non mi catturi l'evento onKeyUp, ma non capisco il perchè!
:(
L'unico altro javascript della pagina è questo
function resta(){
	window.focus();
}
che richiamo dal body con setInterval per mantenere il focus sul popup.
Ma ho provato a toglierlo e non è cambiato nulla.
Vi prego, datemi una mano: ci tengo a realizzare un'interfaccia
pienamente funzionante con Firefox! Grazie!!

 che richiamo dal body con onKeyUp.
onkeyup=sel(event)
Comincia con quanto sopra e posta eventuali altri problemi.
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

 lettera venisse selezionato (o deselezionato) il campo corrispondente.
Firefox accede agli eventi con un parametro passato alla funzione, del
tipo:
function tastoPremuto(e)
{
	alert(e.keyCode);
}
Mentre IE, come hai fatto tu, usa event. Cosě puoi fare:
function tastoPremuto(e)
{
	var _evt=event||e;
	alert(_evt.keyCode);
}
Detto ciň, il tuo codice potrebbe essere ripulito, quando premi un tasto,
non c'č bisogno che lo associ attraverso un array (scritto tra l'altro in
maniera anomala - prova a fare alfabeto.length) e inoltre, usi un
anacronismo che pensavo fosse usato solo didascalicamente per far capire
quanto eval possa essere "evil":
eval('document.emp_qual.' + lett + '.checked');
Esiste una sintassi apposta, tipica degli array associativi, ovvero:
document.forms["nomeForm"].elements["nomeElement"]
Che ti permette di utilizzare variabili senza chiamare in causa eval.
Un'ultima cosa, č inutile ridare il focus alla finestra ogni tot
millisecondi, al massimo potrebbe essere sufficiente darglielo quando lo
perde (onblur).
-- 
Ro!

 perde (onblur).
ci avevo provato perché anche a me sembrava una schifezza l'uso di
setInterval per questo scopo, ma sotto firefox onBlur non mi funziona!
:(
ho fatto anche delle prove con un popup che conteneva solo
function resta(){
        window.focus();
}
ma lanciandola con onBlur, firefox mi perdeva il focus... vabbè, così
mi funziona uguale!
Grazie ancora per le risposte!

 perfettamente, grazie!
dannato c#, ogni var in for javascript mi si trasforma "magicamente" in
int... devo trovare un modo di creare in javascript un alias tipo "int=var"
(ma temo non si possa) :-/
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

 serviva, grazie!
E' utile anche in tanti altri casi. Tieni sempre d'occhio
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference
 quando
hai dubbi o difficoltà.
-- 
Ro!

 int... 
Altro che epidemia da aviaria, che vi sta succedendo a tutti quanti? :D
-- 
Chuck Norris può dividere le acque usando la calcolatrice.

 fare (for $i[..] e quel dollaro me lo perdevo sempre.
Capitava anche a me all'inizio, anche per un semplice rifiuto biologico ad una
sintassi che mi ricordava tanto il basic :)
-- 
Chuck Norris riuscirebbe a leggere e pubblicare tutti i post anche del weekend
collegandosi a gmail con una calcolatrice.

  alfabeto[i]=String.fromCharCode(i);
Tralasciando l'int di cui hai già parlato, perché mettersi a popolare un array
del tutto inutile, visto appunto che esiste "fromCharCode"? :)
-- 
Michael Jackson ha inventato il moonwalk. Chuck Norris ha la retromarcia.

 del tutto inutile, visto appunto che esiste "fromCharCode"? :)
Perché sono partito da quello che ha fatto il jbluto, non sono stato a
pensare ad alternative, ho solo pensato "'sticaz, 1 riga per ogni voce
dell'array" ... avrai notato che in questo periodo aborro la prolissità :-)
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

 dell'array" ... avrai notato che in questo periodo aborro la prolissità :-)
Ma è prolisso anche il codice che hai scritto. :) Ragionaci un po' su: perché
mettersi a fare un ciclo per popolare un array preventivamente, quando ti
basta applicare una volta sola fromCharCode *direttamente* sul keyCode, quando
si tratta di recuperarne il corrispettivo carattere? :)
-- 
Quando Chuck Norris fa l'occhiolino, le ragazze si sciolgono. Letteralmente.

 Altro che epidemia da aviaria, che vi sta succedendo a tutti quanti? :D
:-) eh, diciamo che lavoro al 90% in c# e al 10% con altri linguaggi; così
(complice anche la sintassi molto simile) javascript mi si sta trasformando
in c#-like (posso parlare anche di toUpper[Case], per esempio, che mi frega
sempre...)
curiosità: con le varie figatine che si possono fare con Gecko sarà
possibile "estendere" javascript? per esempio un var=int? (per toUpper()
basta uno stupidissimo prototype che vado ad inserire nella intranet).


 si tratta di recuperarne il corrispettivo carattere? :)
Sono d'accordo ... solo che l'utente usava array e quindi ho mantenuto tale
logica (ma certo, è un po' inutile come cosa).
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 possibile "estendere" javascript? per esempio un var=int? 
No, sarebbe come cambiare il lessico del linguaggio stesso.
Sarebbe come se in C# volessi utilizzare "per" al posto di "for".
Oddio, in C lo fai. :) Non so quanto in questo C# assomigli al suo lontano
parente, magari è possibile. :)
-- 
La prima legge della dinamica di Chuck Norris stabilisce che ad ogni sua
azione non corrisponde alcuna reazione, o son cazzi.

 logica 
Capisco, ma dato che sei andato a ottimizzare proprio quella logica (array
troppo prolisso) non capisco perché tu ti sia fermato a metà. :) Se non avessi
proprio toccato quel punto, avrei potuto capire che preferivi cmq non
modificare la logica utente. Ma nel momento in cui c'hai messo mano proprio
perché era un codice prolisso e inutile, tanto valeva... questo dicevo. :)
-- 
Chuck Norris una volta ha calciato un cavallo sul mento. Ora i suoi
discendenti sono noti come "giraffe".

 sintassi che mi ricordava tanto il basic :)
A me ricorda Paperone in Topolino :P
-- 
Ro!

 hai dubbi o difficoltà.
Grazie del link, è già tra i preferiti!

 scrivo for(x=0;x<... mi sembra sempre di aver dimenticato qualcosa! :D
Immagino, da PHP a JS le var sembrano nude :)
Comunque nessuno ti vieta di usare $ nelle var JS:
for ($i=0;$i<5;$i++)
{
	document.write($i+"<br>");
}
Certo non potrai crearti le "variabili di variabili" di PHP ($$var) ma puoi
camuffarle da JS con window[var] ;)
E inoltre se ti abitui così poi diventerà più complicato evitare problemi
di disattenzione (tipo scrivere var $i="pluto" in PHP ;)
-- 
Ro!

 di disattenzione (tipo scrivere var $i="pluto" in PHP ;)
Vero, quindi sarebbe bene che evitasse di prendere questo tipo di strada,
altrimenti non si abituerà mai a maneggiare più sintassi
contemporaneamente. :)
-- 
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth."

 contemporaneamente. :)
Giusto, è meglio evitarla. Ma se dovesse servire, almeno uno ha la
soluzione sottomano (sapendo però a priori pregi e difetti).
-- 
Ro!

 soluzione sottomano (sapendo però a priori pregi e difetti).
Tranquilli, cercherò di cavarmela in js anche senza le $ :) Alla fine la 
dichiarazione di variabili non è certo il peggio che ti può capitare 
quando lavori con linguaggi differenti! :D