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

3 réponses

1 2
Avatar
YD
Pfff...

quoi = document.f1[quoi];


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


Non. quoi est un identificateur référençant une chaîne mais
quand tu écris document.f1.quoi, le moteur de script recherche
une propriété nommée quoi de l'objet document.f1 et ne
substitue rien du tout à quoi. Il retournera très certainement
undefined à moins qu'une telle propriété soit définie (bien une
avec l'identificateur quoi).
Autrement dit, après le point, JS attends le nom d'une propriété
et pas une valeur à évaluer.

En revanche si on écrit document.f1[quoi], le moteur JS évaluera
quoi et retournera la chaîne puis cherchera une propriété nommée
comme la valeur de la chaîne parmi les propriétés de document.f1.
Entre les crochets JS attends une expression à évaluer.

Essaie ceci :
dans la barre d'adresses du navigateur
javascript:quoi='body', alert(document.quoi);
puis
javascript:quoi='body', alert(document[quoi]);

Tu verras la différence !

--
Y.D.


Avatar
O.L.
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'


Pas d'accord !
Cf. dernier post de YD qui explique tout très bien :p

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

Avatar
ASM
Pfff...

quoi = document.f1[quoi];


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


Non. quoi est un identificateur référençant une chaîne mais
quand tu écris document.f1.quoi, le moteur de script recherche
une propriété nommée quoi de l'objet document.f1 et ne
substitue rien du tout à quoi.


Tremendous ! je m'enduis grâve d'erreur là.

Le plus terrible est que j'étais sûr de mon fait :-(

--
Stephane Moriaux et son [moins] vieux Mac



1 2