Aller au contenu

probleme de gestion d'evenements


Sujets conseillés

Posté

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.

Posté

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

Posté

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.

Posté

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>

Posté

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

Posté (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é par vidzo

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...