Un peu de select et onChange! [Résolu]

Signaler
Messages postés
74
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
2 août 2010
-
Messages postés
74
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
2 août 2010
-
bojnour a tous,

j'ai besoin de vous lol...


je m'xpliqe je suis en train de faire un ti site pour moi et j'ai un
petit problème... en effet j'utilise les fonctions en java et onChange
et en fait je souhaite que lorsque l'utilisateur change le select, on
prenne une valeur d'un champs de text et qu'on la mette dans une case
d'un autre select au même rang

et la est la difficulté parce que il existe bien la commande
selectedIndex mais elle prend la valeur de elect après le changement et
pas avant ce qui me cause quelques conflits pour la suite


finalement j'orais voulu savoir si vous ne conaissiez pas une commande du genre previousselectedIndex lool...

 

je vous met une parti du code pour peut être vous aider a mieux comprendre...

<script language="JavaScript" type="text/javascript">

function change(arg1,arg2)
{
var test = arg1;
var numeroselect = arg2;
document.form2.select1.options[numeroselect].text=test;

alert(numeroselect);
}

</script>
</head>

<form id="form1" name="form1" method="post" action="">
  <select name="list" id="list" onchange="change(document.form1.text.value,this.selectedIndex)">
    <option value="list1">1</option>
    <option value="list2">2</option>
    <option value="list3">3</option>
  </select>
 
</form>
<form id="form2" name="form2" method="post" action="">
  <select id="select1" name="select1">
    <option value="1"></option>
    <option value="2"></option>
    <option value="3"></option>
  </select>
 

merci a tous

++

8 réponses

Messages postés
450
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
18 avril 2007
2
Bonjour,
tu as l'évenement obj.onfocus, il te permettra de detecter lorsque l'utilisateur arrive sur le champ. Donc par exemple :
var valeur;
obj.onfocus=function(){valeur=obj.value};

<hr /><hr />STFOU
Messages postés
152
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
17 janvier 2014
3
Tu peux également mettre à jour une variable globale avec la valeur du selectedIndex sur l'événement onchange de ton select au chargement de la page et à chaque modification et ce, à la fin de tes autres traitements éventuels. Ainsi, cette variable contiendra l'avant dernier index sélectionné.
Messages postés
74
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
2 août 2010

donc voila avec toutes les corrections ça donne ça

<script type="text/javascript">
<!--
var i;
var numeroselect;
function start()
{
i = 0;
}
function changecat(arg1,arg2)
{
 if(i==0)
  {
   numeroselect=0;
   i = i+1;
  }
var nomcat = arg1;
document.save.select_nom_cat.options[numeroselect].text=nomcat;
numeroselect = arg2;
}
//-->
</script>

avec la fonction start a mettre dans body avec onload et la fonction changecat dans le select et ça roule
merci a tous
++
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
Bonjour,




>>lorsque l'utilisateur change le select, on prenne une valeur d'un
champs de text
>>et qu'on la mette dans une case d'un autre select au même rang


    pas de fonction toute faite
    va voir ici par exemple, pour avoir quelques réponses




<hr />



Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
74
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
2 août 2010

ok merci,
j'avais pensé juste après avoir poster a la methode de anthed qui parait la plus simple même si celle de stfou a l'air plus élégante...
je vais voir laquelle est la plus pratique...

encore merci
++
Messages postés
74
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
2 août 2010

bon ba je suis en train d'essayer d'intégrer le code de anthed mais j'ai encore un ti problème...

j'ai creer une variable global dans mon code (je l'appelle i) et au
chargement elle prend la valeur 0 puis quand l'utilisateur change le
select j'appelle une fonction qui avec un if regarde la valeur de i si
celle si est a 0 alors on met la variable numeroselect a 0...


mais la variable global i n'est pas définie dans la 2iem fonction, si quelqu'un sait pourquoi????


je vous met le code pourque cela soit plus clair


voila le java

<script type="text/javascript">

<!--

var i;

//var numeroselect;

function start()

{i=0}

function changecat(arg1,arg2)

{

if(i=0){numeroselect=0;}

var nomcat = arg1;

document.save.select_nom_cat.options[numeroselect].text=nomcat;

var numeroselect = arg2;

}

//-->

</script> et le htlm

<select name="num_cat" id="num_cat" 
onload='start()'
onchange="changecat(document.creation.categorie.value,this.selectedIndex)">

            <option value="nblien_cat01">1</option>

            <option value="nblien_cat02">2</option>

            <option value="nblien_cat03">3</option>

            <option value="nblien_cat04">4</option>

            <option value="nblien_cat05">5</option>

          </select>
je sais bien qu'il y a bien d'autre facon que de
rajouter une variable global i et de raisonner directement sur
numeroselect mais bon le problème final est le même

aucune transmission de valeur de variable entre plusieurs fonctions...


merci de m'aider... ++
Messages postés
152
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
17 janvier 2014
3
Je te conseille d'aérer un peu ton code de la façon suivante :

var i;
//var numeroselect;

function start() {
    i = 0;
}

function changecat(arg1, arg2) {
    if (i == 0) {
        numeroselect = 0;
    }
    document.save.select_nom_cat.options[numeroselect].text = arg1;
    var numeroselect = arg2
}
Le problème que tu as évoqué devait venir du fait que tu as écrit (i 0) au lieu de (i 0).
Ensuite numeroselect est valorisé à 0 avant d'être déclaré puisque sa déclaration globale est en commentaire. A toi de voir si tu la mets globale ou interne à la fonction changecat.
Remplace arg1 et arg2 par des noms plus parlants, ça t'évitera des incompréhensions, surtout dans le cas de grosses fonctions que tu voudrais modifier plusieurs mois après les avoir écrites (mince, c'était quoi arg8 ? ...).
Messages postés
152
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
17 janvier 2014
3
Petit tip : pour tester en 'temps réel' les différentes valeurs de tes variables et ainsi vérifier que ton raisonnement est le bon, tu peux ajouter à la fin de changecat() une ligne du type :
window.status "i " + i + ", numeroselect = " + numeroselect;

La barre d'état est plus discrète que les alert et permet de ne pas changer le fonctionnement des fonctions dans le cas notamment où il y a des temporisations.