laboratorio caffeina

in few words, just developing

 

Form highlighting

Dopo l'autofocus, altro script a mio parere utilissimo è quello dell'highlighting degli input field e delle textarea, ovvero un semplice meccanismo javascript + css che permette di evidenziare il campo della form attualmente in uso. Vi propongo una funzione sviluppata in maniera che sia abbastanza adattabile ai diversi casi.

JavaScript:
  1. window.onload = function(){
  2.   /*applico l'highlight a tutti i campi di input*/
  3.   var inputFields = document.getElementsByTagName("INPUT");
  4.   for(i=0; i<inputFields.length; i++){
  5.     var field = inputFields.item(i);
  6.     if ( field != undefined){
  7.       if ( field.type=="text" || field.type=="password" ){
  8.         /*onfocus cambio la classe corrente con quella focus*/
  9.     field.onfocus = function(){this.className="focus";}
  10.         /*onblur ripristino la classe di default*/
  11.     field.onblur = function(){this.className="";}
  12.       }
  13.     }
  14.   }
  15.   /*stesso vale per le textarea*/
  16.   var textareas = document.getElementsByTagName("TEXTAREA");
  17.   for(i=0; i<textareas.length; i++){
  18.     var textarea = textareas.item(i);
  19.     textarea.onfocus = function(){this.className="focus";}
  20.     textarea.onblur = function(){this.className="";}
  21.   }
  22. }

Chiaramento a questo script va assocciato un opportuno foglio di stile con almeno una classe focus.

CSS:
  1. input.focus{
  2.   border: 1px solid #a00;
  3. }
  4. textarea.focus{
  5.   border: 1px solid #a00;
  6. }
  7. input, textarea{
  8.   padding: 1px;
  9.   background-color: #eee;
  10.   border: 1px solid #999;
  11. }

Visto che sostenere l'utilità di questi script può essere discutibile, vi propongo un esempio completo di una tipica form di contatti.

N.B: Questi script non trattano campi del tipo checkbox, ma in quel caso bisognerebbe studiare una soluzione ad hoc che evidenzi l'intera area contente tutti i radio button o checkbox e non il singolo, poichè la check box o i radio button sono uno o più valori per un campo.

Testato su:
Firefox 2.0.0.3 (Linux)
Mozilla 1.7.13 (Linux)
Epiphany 2.16.1 (Linux)
Galeon 2.0.2 (Linux)
IE 6.0 (Linux)

 
 
commenti
 
cedmax:

altra domanda/obiezione - non te la prendere, sono polemico di default ;-)

visto che praticamente tutti i browser (escluso ie) supportano la pseudoclasse :focus

non converrebbe per evitare di evitare di far eseguire codice “inutile” controllare se il browser in questione è ie e nel tal caso far partire il js, altrimenti semplicemente mettere nel css (oltre al .focus) anche il :focus??

 
 
diego:

effettivamente anch’io penso che per i browser più “moderni” si possano usare le pseudoclassi e poi fare un controllo per far partire il js solo in ie6 o < (perchà©, ma potrei sbagliare, penso che ie7 interpreti le pseudoclassi)

 
 
cedmax:

secondo questo schemino:
http://tinyurl.com/r9mqs

il :focus non è supportato dall’engine di ie nemmeno nella versione 7…

 
 
davide:

Secondo il rasoio di Occam ( http://it.wikipedia.org/wiki/Rasoio_di_Occam ) la soluzione piu´semplice e´quella giusta, per IE non vale pero´:P

 

Commenta



 
Chiudi
E-mail It