[RESOLU] injection de jquery

injection de jquery [RESOLU] - HTML/CSS - Programmation

Marsh Posté le 14-09-2011 à 23:18:21    

Bonsoir à tous,
J'ai un petit soucis :o
 
D'un coté, j'ai ce code qui fonctionne parfaitement (il active ou désactive le bouton en fonction de la valeur du select):

Code :
  1. <script type="text/javascript">
  2. //<![CDATA[
  3. /**
  4. Tous les chargement onLoad()
  5. */
  6. $(document).ready(function() {
  7. $("#liste_historique" ).change(function() {
  8.  console.debug("version selectionn&eacute; changée !" );
  9.  console.debug($("select[name='liste_historique'] option:selected" ).val());
  10.  //$("#ecraser_version" ).removeAttr('disabled');
  11.  if($("#idVersionArticle" ).val() != $("select[name='liste_historique'] option:selected" ).val()) {
  12.   console.debug("oui !" );
  13.   $("#ecraser_version" ).removeAttr('disabled');
  14.  } else {
  15.   console.debug("non !" );
  16.   $("#ecraser_version" ).attr('disabled', 'disabled');
  17.  }
  18. });
  19. });
  20. //]]>
  21. </script>
  22. </head><body>
  23. <input type="hidden" id="idVersionArticle" name="idVersionArticle" value="20" />
  24. <select id="liste_historique" class="liste_historique" name="liste_historique">
  25. <option value="10">2011-09-08 15:31:00</option>
  26. <option selected="selected" value="20">2011-09-14 19:10:27(version actuelle)</option>
  27. </select>
  28. <input id="ecraser_version" type="button" value="écraser la version actuelle avec cette version" disabled="disabled">


 
 
D'un autre coté, je sais que si j'ajoute des éléments dans ma page via la fonction $.load() , puis affecte un comportement via jquery dans du javascript mis à la fin de cet HTML ajouté par $.load(), les comportements fonctionnent.
 
Maintenant mon souci :
 
j'ai besoin de mettre en place le même comportement, mais les éléments arrivent par de l'ajax JSON :
Le code javascript suivant :

Code :
  1. function recupererArticle(id, urlCible){
  2. if(id != "" ) {
  3.  $("#idArticle" ).val(id);
  4. } else {
  5.  id = $("#idArticle" ).val();
  6. }
  7. console.debug("fonction recupererArticle", urlCible+" - "+id);
  8. $.ajax({
  9.  //url: "article_print.ajax.php?idArticle="+id, // url de la page à charger
  10.  url: urlCible+"?idArticle="+id, // url de la page à charger
  11.  cache: false, // pas de mise en cache
  12.  dataType: "json",
  13.  success:function(jsonRetour){ // si la requêté est un succès
  14.   console.debug(jsonRetour);
  15.   $("#header_article" ).html(jsonRetour.header);
  16.   $("#main_article" ).html(jsonRetour.article);
  17.   $("#footer_article" ).html(jsonRetour.footer);
  18.   $("#idVersionArticle" ).html(jsonRetour.idVersionArticle);
  19.  },
  20.  error:function(XMLHttpRequest, textStatus, errorThrows){ // erreur durant la requete
  21.   value_html ="attention, erreur durant la requette, veuillez réessayer ultérieurement";
  22.  }
  23. });
  24. }


 
...injecte le select et le bouton,
et le code suivant :
 

Code :
  1. function createEditor()
  2. {
  3. console.debug("fonction createEditor" );
  4. recupererArticle("", 'article_edit.ajax.php');
  5. /**
  6. Permet sur l'écran de modification d'un article, quand la combobox #liste_historique change sa valeur,
  7. de désactiver le button #ecraser_version si la version affichée est la version actuellement affichée, et l'activer sinon.
  8. **/
  9. $("#liste_historique" ).change(function() {
  10.  console.debug("version selectionn&eacute; changée !" );
  11.  //TODO corriger !
  12.  if($("#idVersionArticle" ).val() != $("select[name='liste_historique'] option:selected" ).val()) {
  13.   $("#ecraser_version" ).removeAttr('disabled');
  14.  } else {
  15.   $("#ecraser_version" ).attr('disabled', 'disabled');
  16.  }
  17. });


 
...est là dès le début, et permet d'appeler la première fonction, puis d'ajouter un comportement au bouton.
 
mais cela ne fonctionne plus... il ne rentre pas du tout dedans.
 
quelqu'un aura une idée ? (autre que me proposer 4 $.load() à la place de mon unique appel ajax, car le traitement en php doit être fait en une seule fois)
 
Merci de vos idées !


Message édité par naeco le 16-09-2011 à 08:19:26
Reply

Marsh Posté le 14-09-2011 à 23:18:21   

Reply

Marsh Posté le 15-09-2011 à 07:10:17    

Tu dois employer "live"
http://api.jquery.com/live/

Reply

Marsh Posté le 15-09-2011 à 22:49:04    

En effet, merci beaucoup !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed