Evénement javascript sur une liste créée en AJAX

Résolu
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 - 17 mars 2010 à 14:13
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 17 mars 2010 à 19:05
Bonjourno !

J'ai 4 listes déroulantes dont les contenus sont liés. La première et la seconde restent fixes, donc les événements "onchange" définis fonctionnent et mettent à jour les listes 3 et 4.

Les listes 3 et 4 sont regénérées entièrement en AJAX (du "<select>" au "</select>").

=> le problème c'est que le "onchange" défini sur ces listes regénérées ne marche pas (qu'il soit défini sur la page de départ ou dans le retour avec le code généré par la page générant les listes).

Ci-dessous le dernier essai de code sur ma page de génération de liste (PHP + javascript) :

$str_retour_liste3 = "<select name='liste_villes' id='liste_villes' style='font-size:11px;' onchange='maj_filtrage2();'><option value='i'>".$trad_localisation_toutes_villes."</option>";
while(@extract(mysql_fetch_array($res_localisation))){
$str_retour_liste3 .= "<option value='".$localisation."'>".$localisation."</option>";
}
$str_retour_liste3 .= "</select>";

echo $str_retour_liste3;

<script type="text/javascript">
window.addEvent('domready',function() 									 
{	
var myRequest2a = new Request({
url: 'regénérer_liste.php',
method: 'get',
evalScripts: true,
 
onSuccess: function(responseText, responseXML){
$('div_genre').innerHTML = responseText;
}
});

function maj_filtrage2(){
alert("maj2");
var sel1 = document.getElementById("type");
var sel2 = document.getElementById("genre");
var sel3 = document.getElementById("liste_villes");
var sel4 = document.getElementById("budget");
var l1 = sel1.options[sel1.selectedIndex].value;
var l2 = sel2.options[sel2.selectedIndex].value;
var l3 = sel3.options[sel3.selectedIndex].value;
var l4 = sel4.options[sel4.selectedIndex].value;
myRequest2a.send('liste1='+l1+'&liste2='+l2+'&liste3='+l3+'&liste4='+l4);
}
});
</script>


> le "onchange'maj_filtrage2();'" ne marche pas car le "alert('maj2')" ne marche pas.

Je sèche depuis 2 jours sur ce pb, si qqun savait comment le résoudre ça m'arrangerait grandement !

@+! Samy

3 réponses

cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
17 mars 2010 à 18:32
parce qu'à l'extérieur ça ne marchait pas non plus. J'me suis dit que tant qu'à faire on va la mettre quand le DOM est ready, p't'être qu'il aimera mieux.

Entre temps, j'ai trouvé un moyen de contourner mon problème de code non interprété : je redéclare l'addEvent sur ma liste sur le onSuccess du Request de départ !

...on passe 2 jours sans rien trouver, puis 10 minutes après avoir posté on trouve LE truc qui vous délivre d'un POIDS ;)

Merci quand même d'avoir lu mon post.

@+! Samy
3
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
17 mars 2010 à 18:24
Bonjour,
Pourquoi faire simple quand...etc...
Pourquoi mettre la fonction dans l'événement onload, heu pardon domready ?
;O)
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
17 mars 2010 à 19:05
RIEN RIEN
mets quand même ta réponse en acceptée....
;O)
0
Rejoignez-nous