OVH Cloud OVH Cloud

onfocus et onblur

13 réponses
Avatar
Eric
Bonjour,

je n'arrive pas a regler ce detail, voici ma fonction :


function verif_nom() {
if (document.f1.nom.value=='') {
document.f1.nom.focus();
}
return;
}


elle fonctionne bien sur un onfocus de tous les champs de formulaire mais
Comment la faire fonctionner sur un onblur de mon champ nom ?

exemple de html qui va avec

<form name="f1">
nom <input type="text" size="32" name="nom" onblur="verif_nom()">
prenom <input type="text" name="prenom" size="32" onfocus="verif_nom()">
</from>

Merci pour l'aide

10 réponses

1 2
Avatar
ASM
Bonjour,

je n'arrive pas a regler ce detail, voici ma fonction :


ben ...
quand tu quittes le champ 'nom'
tu demandes d'y retourner ...

de qui se moque t-on ?

à quoi sert-ce ?

si l'idée est de pouvoir tester en boucle sur 'nom' et 'prenom'

function verifContenu(quoi){
quoi = document.f1.quoi;
if(quoi.value.length<1) quoi.focus();
}

<form name="f1">
nom <input type="text" size="32" name="nom" onblur="verifContenu('prenom')">
prenom <input type="text" name="prenom" size="32"
onblur="verifContenu('nom')"">
</from>


--
Stephane Moriaux et son [moins] vieux Mac

Avatar
O.L.
Bonjour,

je n'arrive pas a regler ce detail, voici ma fonction :


ben ...
quand tu quittes le champ 'nom'
tu demandes d'y retourner ...

de qui se moque t-on ?

à quoi sert-ce ?

si l'idée est de pouvoir tester en boucle sur 'nom' et 'prenom'

function verifContenu(quoi){
quoi = document.f1.quoi;
if(quoi.value.length<1) quoi.focus();
}


La variable quoi sera une chaine de caractère, donc j'ai pas testé mais
AMHA ça ne marchera pas. J'écrirais plutôt :
quoi = eval('document.f1.'+quoi);
Mais j'ai pas testé non plus ;)

Au fait, pour répondre à Eric, chez moi ton code marche nickel, même si
j'enlève le onfocus du champ prénom : c'est donc que le onblur du champ
nom fonctionne comme il faut.
Testé sous WinXP + IE6.

@+

--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net


Avatar
ASM
function verifContenu(quoi){
quoi = document.f1.quoi;
if(quoi.value.length<1) quoi.focus();
}


La variable quoi sera une chaine de caractère,


oui : onblur="verifContenu('truc');"

AMHA ça ne marchera pas. J'écrirais plutôt :
quoi = eval('document.f1.'+quoi);
Mais j'ai pas testé non plus ;)


tant mieux car tu aurais fatigué le processeur de ton crincrin pour
rien: il est esssstrémement rare qu'on *doive* se servir de eval().

Au fait, pour répondre à Eric, chez moi ton code marche nickel,


relu à froid le shmilblick proposé et vaguement compris l'utilité du
truc : il n'y a, en fait, aucune raison qu'il ne fasse pas ce que demandé.
Mais ... ça doit être assez destabilisant de taper son numéro de tél
dans le champ 'nom'. (J'aurais mis un p'tit message pour prévenir.)

--
Stephane Moriaux et son [moins] vieux Mac


Avatar
O.L.
AMHA ça ne marchera pas. J'écrirais plutôt :
quoi = eval('document.f1.'+quoi);
Mais j'ai pas testé non plus ;)


tant mieux car tu aurais fatigué le processeur de ton crincrin pour rien: il
est esssstrémement rare qu'on *doive* se servir de eval().


Ben là c'est vrai qu'on a d'autres solutions
(document.getElementById(), etc) mais le eval() m'a semblé le plus
court et le plus pratique à adapter au machin que t'avais fait :-p

Ou sinon il y aurait un truc avec :
onblur="verif_nom(this)"

--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net


Avatar
ASM
Ben là c'est vrai qu'on a d'autres solutions (document.getElementById(),
etc)


je n'aime pas mettre en branle le DOM si une soluce en bête JS existe.

Ou sinon il y aurait un truc avec :
onblur="verif_nom(this)"


Oui mais non, car ne permet de ne vérifier que le champ quitté
(sans compter que ça ne fonctionnera pas avec ce que j'ai proposé)

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
YD

La variable quoi sera une chaine de caractère [...] J'écrirais plutôt :
quoi = eval('document.f1.'+quoi);


Pfff...

quoi = document.f1[quoi];

--
Y.D.

Avatar
ASM

Pfff...

quoi = document.f1[quoi];


Ha? c'était ça le blème !
(pas touj fastoche de voir ses propres coquilles)

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
ASM

Pfff...

quoi = document.f1[quoi];


J'avais initialement écrit : quoi = document.f1.quoi;
ce qui, théoriquement, revient à la même chose.

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
O.L.

Pfff...

quoi = document.f1[quoi];



Intéressant, je savais pas que ça existait.


J'avais initialement écrit : quoi = document.f1.quoi;
ce qui, théoriquement, revient à la même chose.


Non, puisque quoi est une variable et non le nom d'un champ ...
Si un champ du form s'appelle "quoi", comment JS pourrait il faire la
différence entre ce champ nommé "quoi" et le champ dont le nom est le
même que la valeur de la variable quoi (le champ "nom" dans le cas
présent) ?
Enfin c'est que mon humble avis, je ne connais pas toutes les
subtilités du JS, loin de là ...

--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net


Avatar
ASM


Pfff...

quoi = document.f1[quoi];



Intéressant, je savais pas que ça existait.


la vraie écriture est :
quoi = document.forms['f1'].elements[quoi];

J'avais initialement écrit : quoi = document.f1.quoi;
ce qui, théoriquement, revient à la même chose.



donc on a 3 modes de présentation pour la même chose

Non, puisque quoi est une variable et non le nom d'un champ ...


Hou la la ! ...

dans l'appel à la fonction, verif('truc_machin') bien sûr que tu y remplaces
- quoi (variable)
par
- 'quoi' (nom du champ)
il n'y a aucun lézard, ni mic-mac, ni miracle

le JS fait bien le distingo entre quoi et 'quoi'

--
Stephane Moriaux et son [moins] vieux Mac



1 2