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
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

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

Essaye onkeyup (relâcher la touche)
ZEUS PRESIDENT !!!!!
TIP TOP RESOLU !
MERCI MERCI MERCI...y en a 1000

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

for ($i=0; $i < 1000; $i++)
{
echo "MERCI ";
}
Ah, c'était pas une question

Posté : 18 janv. 2007, 16:31
par Ryle
Posté : 18 janv. 2007, 16:42
par albat
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
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

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é

Promis je le referais plus
Me vais te lui préparer un super gros algo en Java moi la prochaine fois
PS : Java, pas JavaScript 