vidzo Posté 16 Septembre 2009 Posté 16 Septembre 2009 Bonjour a tous, Je suis en train de coder un formulaire qui utilise l'evenement onchange. Le formulaire contient plusieurs selects. A chaque fois que l'utilisateur change la valeur d'un des selects, je voudrais que le onchange renvoie les valeurs de tous les selects. <script> var a=0; var b=0;</script><select name="a" id="a" onchange="a=this.value; alert(+a+;"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option></select><select name="b" id="b" onchange="b =this.value; alert(+a+;"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option></select> Le probleme, c'est que si je change le premier select sans avoir changer le deuxieme, ou le deuxieme sans avoir changer le premier, dans l'alert, la valeur de la variable non changée est 0, alors que je voudrais que ce soit 1 (valeur par défaut du select). J'ai donc essayé le code suivant: <script> var a=document.getElementById(a); var b=document.getElementById(;</script><select name="a" id="a" onchange="a=this.value; alert(+a+;"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option></select><select name="b" id="b" onchange="b =this.value; alert(+a+;"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option></select> Pas mieux, le résultat est exactement le même. Une idée? Merci de votre aide.
SStephane Posté 16 Septembre 2009 Posté 16 Septembre 2009 Hello, sur la première valeur : <option value="1" selected="selected">1</option> non ? (pas testé) Sinon encore plus simple, tu initialises tes variables a, b ... à 1 dans le onload de la page:)
vidzo Posté 17 Septembre 2009 Auteur Posté 17 Septembre 2009 Le probleme persiste avec cette nouvelle ligne (<option value="1" selected="selected">1</option>) Mais en fait, les valeurs possibles du select sont remplies depuis la base de donnée, il peut y 'en avoir 2 comme 20, (le nombre de select peut aussi varier suivant les cas) donc les options sont générées avec une boucle. Donc difficile d'initialiser les valeurs. A moins que je fasse la même requête en limitant la reponse a 1. C'est jouable. Je tente. Merci bien.
vidzo Posté 17 Septembre 2009 Auteur Posté 17 Septembre 2009 Autre petite question, qui n'a rien a voir. Je me demandais, est-il possible de nommer une variable javascript par la valeur d'une variable php? (un peu tordu, je sais...) En gros, est-il possible de faire ca? : <?php$test='variabletest';?><script> var <?phpecho$test;?>='ok'; alert(variabletest);</script>
vidzo Posté 17 Septembre 2009 Auteur Posté 17 Septembre 2009 Mmm non, probleme entre serveur et client j'imagine.
SStephane Posté 17 Septembre 2009 Posté 17 Septembre 2009 Bien sur que c'est possible ! TU peux générer ce que tu veux en php
vidzo Posté 17 Septembre 2009 Auteur Posté 17 Septembre 2009 Alors pourquoi Firebug me dit? invalid XML markup [break on this error] <?phpecho$nomval;?>=this.value); Mon code: <?php$n=5;for($s=1;$s<=$n;$s++){ $nomval='val'.$s; $param='param'.$s;?> <script> var <?phpecho$nomval;?>=1; </script><?php echo"$param:"; ?> <select name='<?phpecho$param; ?>' id='<?phpecho$nomval;?>' onchange="<?phpecho$nomval;?>=this.value);"> <option value='val1'>val1</option> <option value='val2'>val2</option> <option value='val3'>val3</option> <option value='val4'>val4</option></select><br/><?php}?>
captain_torche Posté 17 Septembre 2009 Posté 17 Septembre 2009 Tu n'as pas mis d'espace entre <?php et echo : ton tag d'ouverture n'est pas reconnu par PHP.
vidzo Posté 17 Septembre 2009 Auteur Posté 17 Septembre 2009 Oups Merci bien, ca marche tout de suite mieux.
vidzo Posté 17 Septembre 2009 Auteur Posté 17 Septembre 2009 (modifié) Je suis desolé, mais j'ai encore un petit probleme. J'ai rajouté quelques lignes au code ci dessus: <?php$n=5;for($s=1;$s<=$n;$s++){ $nomval='val'.$s; $param='param'.$s;?> <script> var <?php echo$nomval;?>=1; </script><?php echo"$param:"; ?> <select name='<?php echo$param; ?>' id='<?php echo$nomval;?>' onchange="<?php echo$nomval;?>=this.value;alert('<?php echo$nomval;?> vaut:'+<?php echo$nomval;?>);"> <option value='1'>val1</option> <option value='2'>val2</option> <option value='3'>val3</option> <option value='4'>val4</option></select><br/><?php}?><script> var req ='id_valeur='+val1; <?php for($m=2;$m<=$n;$m++) { $value='val'.$m; ?> req= req+' OR id_valeur<?php echo$value;?>='+<?php echo$value;?>; <?php } ?></script><input type="submit" onclick="alert('req vaut:'+req);"/> Lorsque je change la valeur d'un des select, l'alert affiche le résultat voulut. Par exemple, si je choisit la valeur 4 dans le select 2, l'alert donne "val2 vaut 4". Pourtant, lorsque je clique sur le bouton submit, l'evenement onclick se déclenche bien, mais j'ai l'alert suivante : "req vaut:id_valeur=1 OR id_valeurval2=1 OR id_valeurval3=1 OR id_valeurval4=1 OR id_valeurval5=1" Les 5 valeurs semblent être revenues a 1... Mon erreur est-elle aussi stupide que la précedente? Modifié 17 Septembre 2009 par vidzo
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant