Newsgroup: it.comp.lang.javascript
Titolo: troppi onfocus

ho una pagina con molti texbox che al focus
cambiano colore di sfondo ed al blur tornano
come prima
si puo' impostare dei 'gestori globali' senza mettere
onfocus="myfocus(this);" onblur="myblur(this);"
su TUTTI i controlli?
(appesantendo una pagina gia' abbastanza pesa di suo)
pensavo qualcosa del genere:
document.onfocus = myfocus(this)
document.onblur = myblur(this)
 function myfocus(t)
{
if (t.id.substr(1,7)=='Textbox')
{t.className = 'inputFocus';}
}
function myblur(t)
{
if (t.id.substr(1,7)=='Textbox')
{t.className = '';}
}
ma non funziona una beata ...
qualche idea?
saluti e grazie 

 su TUTTI i controlli?
Se usi un browser allora cerca in google __defineGetter/__defineSetter.
Se invece usi IE non esiste nulla di simile, il massimo che puoi fare č
ciclarti i controlli.
Es. per tutte le textbox di una form (scrivo al volo, speriamo di non
scrivere boiate):
  for(int i=0,obj=document.forms[0].elements;i<obj.length;i++)
   if(obj[i].tagName=="input"&&obj[i].type=="text")
    obj[i].onfocus="myfocus(this)";
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 Se usi un browser allora cerca in google __defineGetter/__defineSetter.
Uhm...in realtà io lo ho usato per aggiungere proprietà, non per definire
metodi/eventi; verifica comunque (sempre se appunto sei in una intranet e
usi browser Gecko).
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 Se usi un browser allora cerca in google __defineGetter/__defineSetter.
Se usa gecko, allora può usare il defineGetter/defineSetter... E' un po'
diverso. :)
E cmq, se usa "un browser" - aggiungiamoci "fatto come dio comanda" o "che
segue gli standard web", altrimenti non è detto che tutti afferrino
l'ironia - può benissimo usare :focus nei css per fare ciò che desidera
senza troppi problemi...
-- 
ZER0
~ "Lord Pando è il mio orsacchiotto di pezza.
Si veste di nero, si fa dei tatuaggi in faccia e dice
che è passato al Lato Oscuro... ma secondo me è solo l'adolescenza."

    obj[i].onfocus="myfocus(this)";
mi puo' andare bene ... in fondo sono 3 righe di script ...
provo subito! 

mah ...
 var obj = document.forms[0].elements;
 for (var i=0;i<obj.length;i++){
 obj[i].onfocus="myfocus(this);";}
non funziona per niente ....
mentre mettendo onfocus="myfocus(this);"
su tutte le textbox si ...
come mai? 

  obj[i].onfocus="myfocus(this);";}
  obj[i].onfocus=function() {myfocus(this)} potrebbe andare...
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

 come mai?
perché nel primo caso stai impostando direttamente un event-handler; nel
secondo un attributo di un tag di cui viene fatto il binding ad un
event-handler.
Il codice corretto nel primo caso sarebbe il seguente:
obj[i].onfocus=function(){myfocus(this);}
-- 
ZER0
~ "Lord Pando è il mio orsacchiotto di pezza.
Si veste di nero, si fa dei tatuaggi in faccia e dice
che è passato al Lato Oscuro, ma secondo me è solo l'adolescenza!"

 {obj = document.NOMEFORM.elements}
No, la sintassi usata č la piů compatibile.
-- 
"e mai che mi sia venuto in mente
 di essere piů ubriaco di voi
 di essere molto piů ubriaco di voi"
									  F.D.A.

un grazie ai guru!
questa e' la mia routine definitiva per chi ci googla
(o googlera'? ... come si coniuga googlare? ;) )
var obj = document.forms[0].elements;
for (var i=0;i<obj.length;i++)
{if (obj[i].id.substr(0,7)=="Textbox")
{obj[i].onfocus=function(){this.className='inputFocus'};
obj[i].onblur=function(){this.className=''}
}
}
rilancio con un'altro dubbio ...
la prima riga sarebbe meglio trasformarla cosi' per
compatibilita' con IE4/5?
var obj = document.forms[0].elements;
