Bonsoir à tous,
J'ai un petit soucis
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 :
- <script type="text/javascript">
- //<![CDATA[
- /**
- Tous les chargement onLoad()
- */
- $(document).ready(function() {
- $("#liste_historique" ).change(function() {
- console.debug("version selectionné changée !" );
- console.debug($("select[name='liste_historique'] option:selected" ).val());
- //$("#ecraser_version" ).removeAttr('disabled');
- if($("#idVersionArticle" ).val() != $("select[name='liste_historique'] option:selected" ).val()) {
- console.debug("oui !" );
- $("#ecraser_version" ).removeAttr('disabled');
- } else {
- console.debug("non !" );
- $("#ecraser_version" ).attr('disabled', 'disabled');
- }
- });
- });
- //]]>
- </script>
- </head><body>
- <input type="hidden" id="idVersionArticle" name="idVersionArticle" value="20" />
- <select id="liste_historique" class="liste_historique" name="liste_historique">
- <option value="10">2011-09-08 15:31:00</option>
- <option selected="selected" value="20">2011-09-14 19:10:27(version actuelle)</option>
- </select>
- <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 :
- function recupererArticle(id, urlCible){
- if(id != "" ) {
- $("#idArticle" ).val(id);
- } else {
- id = $("#idArticle" ).val();
- }
- console.debug("fonction recupererArticle", urlCible+" - "+id);
- $.ajax({
- //url: "article_print.ajax.php?idArticle="+id, // url de la page à charger
- url: urlCible+"?idArticle="+id, // url de la page à charger
- cache: false, // pas de mise en cache
- dataType: "json",
- success:function(jsonRetour){ // si la requêté est un succès
- console.debug(jsonRetour);
- $("#header_article" ).html(jsonRetour.header);
- $("#main_article" ).html(jsonRetour.article);
- $("#footer_article" ).html(jsonRetour.footer);
- $("#idVersionArticle" ).html(jsonRetour.idVersionArticle);
- },
- error:function(XMLHttpRequest, textStatus, errorThrows){ // erreur durant la requete
- value_html ="attention, erreur durant la requette, veuillez réessayer ultérieurement";
- }
- });
- }
|
...injecte le select et le bouton,
et le code suivant :
Code :
- function createEditor()
- {
- console.debug("fonction createEditor" );
- recupererArticle("", 'article_edit.ajax.php');
- /**
- Permet sur l'écran de modification d'un article, quand la combobox #liste_historique change sa valeur,
- de désactiver le button #ecraser_version si la version affichée est la version actuellement affichée, et l'activer sinon.
- **/
- $("#liste_historique" ).change(function() {
- console.debug("version selectionné changée !" );
- //TODO corriger !
- if($("#idVersionArticle" ).val() != $("select[name='liste_historique'] option:selected" ).val()) {
- $("#ecraser_version" ).removeAttr('disabled');
- } else {
- $("#ecraser_version" ).attr('disabled', 'disabled');
- }
- });
|
...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