Page 1 sur 2

Champ dynamique qui se change à la saisie d'un autre champ

Posté : 18 janv. 2007, 11:37
par Arthurino
Bonjour,

J'suis noob, j'ai fait des bribes de scripts et voudrais savoir comment je peux faire pour que lorsque je saisis dans un champ A une valeur, ca me change instantanément et de façon continue, en direct mon champ B (c'est pour faire une sorte de convertisseur dynamique. Je voudrais ne pas avoir à déclencher d'évènement bouton...J'espère être clair dans mes explications. Si vous pouviez m'aider merci, car je sais pas comment faire :?

Arthurino

Posté : 18 janv. 2007, 11:49
par albat
ça s'appelle "listes déroulantes liées" et on trouve ça en utilisant le moteur de recherche du forum. ;)

Posté : 18 janv. 2007, 12:08
par Invité
Non non moi je n'utilise pas les menus déroulants c'est 2 champs texte...

Posté : 18 janv. 2007, 12:21
par zeus
Alors, il y a plusieurs solutions :
1/ Tout en JavaScript
Il suffit d'ajouter l'évenement, onChange ou onKeyPress sur ton champ qui appelle une fonction JavaScript
exemple

Code : Tout sélectionner

<input type="text" name="champ1" id="champ1" onkeypress="javascript: convert_value(this.value);" /> <input type="text" name="champ2" id="champ2" /> <script type="text/javascript"> function convert_value(valeur) { //Calcul document.getElementById("champ2").value = valeur; } </script>
2/ Calcul en PHP
Utilise la même base que la précédente mais la fonction onkeypress() doit lancer un appel AJAX.
Tu peux t'aider du tutoriel qui est dans la FAQ sur les listes liées, c'est le même principe ;)

Posté : 18 janv. 2007, 12:23
par Ryle
Tu peux détecter la perte du focus sur le champ avec l'attribut onBlur. Ainsi dès que l'utilisateur quitte le champ, tu peux lances une (ou plusieursà) instructions javascript.
(Tu peux aussi utiliser onChange qui fait quasiment de même, mais j'ai jamais été très satisfait de son efficacité...)

Sinon tu peux utiliser l'attribut onKeyPress pour détecter une saisie dans le champ, voire onKeyDown (lorsque l'utilisateur presse sa touche, mais que la valeur n'a pas encore été renseignée dans le champ) ou onKeyUp (lorsque l'utilisateur relache la touche, le champ a été renseigné)

<input .... onBlur="alert('Vous avez quitté le champ.');" />

Posté : 18 janv. 2007, 13:14
par Invité
MERCI A VOUS !!! CA MARCHE PRESQUE :)

La solution tout en javascript de Zeus correspond parfaitement à mes attentes. Le seul hic c'est que ca n'écrit pas le premier caractère mais commence à écrire qu'à partir du 2ème caractère saisi lol...

champ 1 : 1 champ 2 :
champ 1 : 12 champ 2 : renvoie 1
...

Ca doit pas être méchant :o

Arthurino

Posté : 18 janv. 2007, 13:19
par zeus
C'est surement parce qu'au moment où tu appuie (onkeypress), le caractère n'est pas apparu dans le 1er champ :-k
Essaye onkeyup (relâcher la touche)

Par contre, comme c'est du JS, pense bien à essayer sous IE et FF car ils ont des interprétations différentes ;)

Posté : 18 janv. 2007, 13:27
par Invité
C'est surement parce qu'au moment où tu appuie (onkeypress), le caractère n'est pas apparu dans le 1er champ :-k
Essaye onkeyup (relâcher la touche)
ZEUS PRESIDENT !!!!!
TIP TOP RESOLU !
MERCI MERCI MERCI...y en a 1000 :P

Posté : 18 janv. 2007, 14:14
par zeus
ZEUS PRESIDENT !!!!!
;)
TIP TOP RESOLU !

C'est fait pour toi
MERCI MERCI MERCI...y en a 1000 :P
for ($i=0; $i < 1000; $i++)
{
  echo "MERCI ";
}
Ah, c'était pas une question :oops:
:langue:

Posté : 18 janv. 2007, 16:31
par Ryle
Ah, c'était pas une question :oops: :langue:
C'est surtout que c'est franchement pas approprié, voire même décevant de la part d'un modérateur tel que toi...
c'est vrai quoi... t'es dans la section javascript après tout ;)

Code : Tout sélectionner

for (var i=0; i < 1000; i++) { document.write "MERCI "; }
:langue:

Posté : 18 janv. 2007, 16:42
par albat
:lol: :lol: :lol:

Posté : 18 janv. 2007, 16:45
par Ajoloca
Monsieur le modérateur Ryle

J'ai essayé votre code

Code : Tout sélectionner

<html><head><title></title></head><body><script type="text/javascript"> for (var i=0; i < 1000; i++) { document.write "MERCI "; } </script></body></html>
et rien ne s'affiche, pourquoi ?
write(), ne serait pas une méthode de l'objet JS document ?

Posté : 18 janv. 2007, 16:47
par albat
:lol: :lol: :lol:
:lol: :lol: :lol:

Posté : 18 janv. 2007, 16:56
par Ryle
euh... si.... tout à fait..... une méthode...... très justement....... à laquelle il faudrait des parenthères.......... pour passer les arguments quoi........... au lieu de bêtement faire un copier/coller comme il est fort probablement que je le fit pour les mettre à la suite sans me poser plus de question 8-|

Posté : 18 janv. 2007, 17:23
par zeus
C'est surtout que c'est franchement pas approprié, voire même décevant de la part d'un modérateur tel que toi...
c'est vrai quoi... t'es dans la section javascript après tout ;)
Désolé :oops: Promis je le referais plus 8-|

Me vais te lui préparer un super gros algo en Java moi la prochaine fois :twisted:
PS : Java, pas JavaScript ;)