HighDots Forums  

focus Netscape ed Opera

Javascript (Italian) Il linguaggio JavaScript (it.comp.lang.javascript)


Discuss focus Netscape ed Opera in the Javascript (Italian) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Andrea
 
Posts: n/a

Default focus Netscape ed Opera - 10-27-2003 , 08:58 AM






Salve,

in Netscape ed Opera c'č modo di dare il focus ad un determinato elemento
della pagina?

Per IE scrivo questa istruzione

document.forms["frm"].elements[nome].focus(); (dove 'nome' corrisponde al
this.name)

e funziona.

Ma per Netscape ed Opera no.

Grazie.

Andrea.





Reply With Quote
  #2  
Old   
Cristiano Larghi
 
Posts: n/a

Default Re: focus Netscape ed Opera - 10-27-2003 , 09:10 AM






Stranissimo, secondo me dovrebbe funzionare...
stai eseguendolo onload?



Reply With Quote
  #3  
Old   
Cristiano Larghi
 
Posts: n/a

Default Re: focus Netscape ed Opera - 10-27-2003 , 09:25 AM



Stranissimo...
prova (la sparo) a togliere il return
(onchange='ControllaData(this,this.name)')



Reply With Quote
  #4  
Old   
Andrea
 
Posts: n/a

Default Re: focus Netscape ed Opera - 10-27-2003 , 09:26 AM




Guarda ho questa funzione per il controllo data , che richiamo
dall'onChange...
<input type="text" name="email" size="40" value="" onChange="return
ControllaData(this,this.name);"

function ControllaData(campo,nome)
//Controlli formali sulla data digitata
{
var anno
var mese
var mesi
var giorno
valore = campo.value;
var prova;

if (valore != '')
{
if (valore.length != 10)
{
alert("Attenzione!! Il valore del campo *Data* deve essere di tipo data
(gg/mm/aaaa).");
document.forms["isn"].elements[nome].focus();
return (false)
}
else
{
anno = parseInt(valore.substring(6,10))
}

if (valore.substring(0,1) == 0)
{
gior = parseInt(valore.substring(1,2))
}
else
{
gior = parseInt(valore.substring(0,2))
}

if (valore.substring(3,4) == 0)
{
mese = parseInt(valore.substring(4,5));
}
else
{
mese = parseInt(valore.substring(3,5));
}

if (isNaN(anno)==true)
{
alert("Attenzione!! Data errata.");
document.forms["isn"].elements[nome].focus();
return false;
}
if (isNaN(gior)==true)
{
alert("Attenzione!! Data errata.");
document.forms["isn"].elements[nome].focus();
return false;
}
if (isNaN(mese)==true)
{
alert("Attenzione!! Data errata.");
document.forms["isn"].elements[nome].focus();
return false;
}
if (anno < 1900)
{
alert("Attenzione!! Data errata.");
document.forms["isn"].elements[nome].focus();
return false;
}

mesi = new Array(31,28,31,30,31,30,31,31,30,31,30,31)
if (((anno % 4) ==0) && ((anno % 100) !=0))
{
mesi[1]=29
}
else
{
if ((anno % 400) ==0)
{
mesi[1]=29
}
}
if (mese > 12)
{
alert("Attenzione!! Data errata!!!.");
document.forms["isn"].elements[nome].focus();
return false;
}
if (gior > mesi[mese-1])
{
alert("Attenzione!! Data errata.");
document.forms["isn"].elements[nome].focus();
return false;
}
}
return true;
}





Reply With Quote
  #5  
Old   
Andrea
 
Posts: n/a

Default Re: focus Netscape ed Opera - 10-27-2003 , 09:51 AM




Non funziona.....nemmeno con IE cosė....non mi importa, faccio controlli
anche lato server.

Grazie e ciao (alla prossima)!!!

Andrea.



Reply With Quote
  #6  
Old   
Andre@
 
Posts: n/a

Default Re: focus Netscape ed Opera - 10-27-2003 , 11:32 AM



Quote:
Non funziona.....nemmeno con IE cosė....non mi importa, faccio controlli
anche lato server.

Grazie e ciao (alla prossima)!!!

Noo aspetta...
Tanto per iniziare funziona con IE6, MZ1.5, OP7.21;
forse tu non volevi mettere il fuoco ma volevi selezionarlo! Quindi devi
usare ...select();
Poi ti consiglio caldamente di ottimizzare la funzione che hai postato,
perche' fa abbastanza spavento:


Ti do qualche dritta:

- tutti quei:
document.forms["isn"].elements[nome].focus()
cambiali con:
campo.focus() o meglio campo.select();

- Tutti quei controlli:
if (isNaN(anno)==true){
alert("Attenzione!! Data errata.");
document.forms["isn"].elements[nome].focus();
return false;
}
if (isNaN(gior)==true)
...
if (isNaN(mese)==true)
...
if (anno < 1900) if (mese > 12) if (gior > mesi[mese-1])
Incorporali il piu' possibile:
if(isNaN(gior) || isNaN(mese) ||...)

- Poi ci sarebbero alter cose, per ora...




Reply With Quote
  #7  
Old   
Andrea
 
Posts: n/a

Default Re: focus Netscape ed Opera - 10-28-2003 , 03:28 AM



Ho provato ad usare .select() ed effettivamente seleziona il campo quando
la data č errata, ma lo colora e basta con Netscape e se scrivo, modifico il
valore del campo successivo (mentre con IE colora e si posiziona sul campo
data).

Andrea.



Reply With Quote
  #8  
Old   
Andre@
 
Posts: n/a

Default Re: focus Netscape ed Opera - 10-28-2003 , 04:37 AM



Quote:
Ho provato ad usare .select() ed effettivamente seleziona il campo quando
la data č errata, ma lo colora e basta con Netscape e se scrivo, modifico
il
valore del campo successivo

ALT!

Ma tu non ci avevi detto tutto! Quasi certamente stai usando qualche altro
evento per andare nell'altro campo nel caso abbia raggiunto (ad es.) tot
caratteri o qualcosaltro... Perche' ti ripeto per l'ultima volta, il codice
cosė da te postato FUNZIONA!

Poi tra le tante cose che non capisco perche' si tratta di un "campo data" e
si chiama email???
In fine se priprio vuoi essere sicuro non mettere un campo di testo,
iserisci 3 select:
<select size="1" name="giorno">
<option>1</option>
<option>...</option>
<option>31</option>
</select>
<select size="1" name="mese">
....
<select size="1" name="anno">
in questo caso devi solo controllare che non inseriscano 30 feb..., casa che
comunque non facevi, allora funziona anche senza JS...

Oppure se cosė non ti piace metti 3 campi testo cosė:

<input type="text" name="giorno" maxLength="2" size="3" name="giorno"> /
<input type="text" name="mese" maxLength="2" size="3"> /
<input type="text" name="anno" maxLength="4" size="5">

e se poi vuoi metti uno scriptino per far inserire solo dei numeri non altre
lettere:

onKeyPress="return onlyNum(event)"

e da qualche parte:

function onlynum(e)
{
if (e.which){
if(e.which!=46 && e.which!=8 && (e.which<48 || e.which>57))
return false;
}
else if(e.keyCode){
if(e.keyCode!=46 && e.keyCode!=8 && (e.keyCode<48 || e.keyCode>57))
return false;
}
return true;
}




Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.