Bonjour,
Je dois débugger une fonction et voici mon problème:
j'ai un select avec des Pays, lorsque celui ci est changé, il doit rafraichir un select d’hôtels.
Par défaut, la liste d'hotels est créer et un événement on change sur celle ci est "crée aussi". Ca fonctionne, si je modifie la liste d'hotels, le comportement dans le change se fait.
Maintenant si je change un pays, le select d'hotels se mets à jours ( comportement 2) avec une autre fonction et le on change est " re crée " mais celui ci ne fonctionne plus, aucun code à l'intérieur n'est exécuté. J'ai tenté de ne mettre qu'une fois le " on change " dans le comportement par défaut, et de unbind() la fonction avant de la recréer, mais ça ne fonctionne pas.
Pour moi, ça ne me parait pas logique de créer l'evenement onChange à chaque passage dans la fonction. bref, le code est un peu bizarre.
Je suis assez mauvais en jquery, mais je dois essayer de la débugger quand même :/
Auriez vous des suggestions ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 function getHotels(id { if ( comportement 2 ) { // $("#filtre_hotel"+id).remove() // $("#filtre_hotel"+id).unbind('change' ); [...] jQuery.ajax({ type: 'POST', url: "{{ path('VIHotelBundle_hotel_hotels') }}", data: { pays: pays, }, success: function(data, textStatus, jqXHR) { var json = jQuery.parseJSON(data); var content = "<select class='filtre_hotel span12' id='filtre_hotel"+id+"' name='filtre_hotel'><option value='' selected='selected'>Hôtel</option>"; for(i=0;i<json.data.length;i++) content = content + "<option id='"+json.data[i].presd+"' value='"+json.data[i].id+"'>"+json.data[i].content+"</option>"; content = content + "</select>"; $('#f'+id+' #hotel').html(content); // on place le select } }); } else if ( comportement par defaut ) { var content = "<select class='filtre_hotel span12' id='filtre_hotel"+id+"' name='filtre_hotel'><option value='' selected='selected'>Hôtel</option>"; {% for hotel in hotels %} {% if hotel.getPrestataire() != NULL %} {% set presd = hotel.getPrestataire().getId() %} {% else %} {% set presd = "-1" %} {% endif %} content = content + "<option id='{{presd}}' value='{{hotel.id}}'>{{hotel.nom}}</option>"; {% endfor %} content = content + "</select>"; $('#f'+id+' #hotel').html(content); // on place le select } $("#filtre_hotel"+id).change(function () { alert('CHANGE'); }); }
Partager