Page 1 sur 1
Problème avec Enter
Posté : 07 sept. 2005, 03:38
par Akei
Salut,
Je me lance à peine en js et j'aimerais réussir à faire en sorte que lorsque je fais entrer (avec mon clavier) mon focus se mette sur le champs suivant de mon formulaire. Donc ce que j'ai fait c'est que lorsque je charge ma page je perd le focus de mon bouton submit avec un onbur et sur chaque input j'appelle une fonction qui me donne le focus sur le champs suivant. Seulement je saisis mon 1er champs et je fais entrer et je n'atteris pas sur mon 2eme champs, il valide mon bouton. J'ai essayé de mettre la fonction qui me permet de perdre le focus du bouton dans mon input mais ce n'est pas bon. Comment pourrais je faire pour que je désactive mon bouton et que lorsque j ai saisi mon dernier champs il se reactionne, quelque chose comme ca?
Quelqu'un pourrait m'eclairer?
Merci
Posté : 07 sept. 2005, 20:39
par PhilFree
Salut,
Pourquoi veux-tu utiliser ENTER pour passer au champ suivant alors que TAB est prévu pour ça ?
Posté : 07 sept. 2005, 21:38
par JazzFinder
---
Posté : 07 sept. 2005, 23:34
par Akei
Merci beaucoup c'est ca que je voulais

Posté : 08 sept. 2005, 21:39
par Akei
Bonjour,
Quelqu'un pourrait m'expliquer le bout de code?
Parce qu'en fait je croyais que c'était bon mais ce n'est pas tout à fait le cas.
En fait le enter passe bien au champs suivant. Mais lorsque j'arrive à mon dernier champs à saisir, je lui dis de prendre mon bouton submit en focus mais rien ne se passe.
Je vous mets mon code.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-FR" lang="fr-FR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script LANGUAGE="JavaScript">
function donnerFocus(nom) {
document.forms[0].elements[nom].focus();
}
/***********************************************
* Script pour désactiver la touche "Enter" dans un formulaire
* Auteur inconnu
***********************************************/
function handleEnter (field, event) {
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if (keyCode == 13) {
var i;
for (i = 0; i < field.form.elements.length; i++)
if (field == field.form.elements[i])
break;
i = (i + 1) % field.form.elements.length;
field.form.elements[i].focus();
return false;
}
else
return true;
}
</script>
</head>
<body>
<form action="essai2.html">
<div class="entreLigne">
<label id="nom">Nom</label>
<input name="nom" onkeypress="return handleEnter(this, event)" tabindex="1" />
<label id="prenom">Prénom</label>
<input name="prenom" onkeypress="return handleEnter(this, event)" tabindex="2" />
</div>
<div class="entreLigne">
<label id="password">Mot de passe</label>
<input name="password" onkeypress="return handleEnter(this, event)" tabindex="3" />
<label id="tel">Téléphone</label>
<input name="tel" onkeypress="return handleEnter(this, event)" tabindex="4" />
</div>
<div class="entreLigne">
<label id="fonction">Fonction</label>
<select name="fonction" onkeypress="donnerFocus('boutonSuivant')" tabindex="5" >
<option selected>Fonction1</option>
<option>Fonction2</option>
<option>Autres</option>
</select>
</div>
<div id="globalNav">
<input name="boutonPrecedent" onmouseover="changerClasseBoutonApres(this)" onmouseout="changerClasseBoutonAvant(this)" class="boutonAvant" tabindex="7" type="submit" value="Précédent"/>
<input name="boutonSuivant" onmouseover="changerClasseBoutonApres(this)" onmouseout="changerClasseBoutonAvant(this)" class="boutonAvant" tabindex="6" type="submit" value="Continuer"/>
</div>
</form>
</body>
</html>
J'ai un bug lorsque j'arrive sur mon select. J'aimerais que lorsque je choisis ma selection et que j'appuie sur mon enter il parte sur mon bouton suivant.
Merci
++
Posté : 08 sept. 2005, 21:52
par Cyrano
Je viens de faire un essai, ça ne fonctionne de toutes façon pas sous IE6, en tous cas pas sur ma machine
Quant au problème, je l'ai vu sous Firefox, mais je ne vois pas comment le résoudre.
Posté : 08 sept. 2005, 22:01
par JazzFinder
---
Posté : 08 sept. 2005, 23:50
par Akei
la fonction changerClasseBoutonApres(this) je ne l'ai pas mise dans l'exemple mais je l'ai défini dans mon code.
Le problème vient du select. Si j'enlève le select et que je met un champs de saisie simple en dernier je me dirige bien sur le bouton que je souhaite.
J'espere que j'ai été assez claire.
++
ps: cyrano je n'ai pas de soucis avec ie6.
Posté : 09 sept. 2005, 01:15
par JazzFinder
---
Posté : 09 sept. 2005, 02:27
par Akei
On oublie mes 2 fonctions changerClasseBoutonAvant et changerClasseBoutonApres c'est juste pour définir un style.
Mon problème est que lorsque je saisis mon formulaire ta fonction fonctionne tres bien seulement lorsque j'arrive aux champs select pour la fonction, j'aimerais que lorsque l'utilisateur clique sur enter il ai le focus sur le boutonSuivant et non le boutonPrecedent. C'est pourquoi j'ai utilisé ma fonction donnerFocus. Mais le problème c'est que sous FF il attend un onchange et sous IE6 ca l'air de bien fonctionner le onkeypress.
++
Posté : 09 sept. 2005, 03:36
par JazzFinder
---
Posté : 09 sept. 2005, 10:34
par Akei
Mais dans mon select je ne peux pas faire appelle à une fonction qui me donne le focus sur mon boutonSuivant? Au départ ca fonctionnait mais maintenant je vois que ce n'est plus tres fiable

.
En tout cas merci pour l'aide.
+
Posté : 09 sept. 2005, 17:51
par JazzFinder
---
Posté : 10 sept. 2005, 01:08
par Akei
Ben en fait non parce qu'il faut que je garde mon select. Bon au pire des cas l'utilisateur débutant cliquera sur le bouton avec sa souris (c'est pas top par contre).
Merci pour l'aide.