En fait, j'ai dû modifier un peu cela et j'ai pensé partager ce que j'ai fait ici au cas où quelqu'un d'autre tombe sur ce post. Il y avait trois principaux points que j'ai dû prendre en compte :
- Les erreurs fréquentes se produisent car elle tente de charger django.jQuery avant qu'il ne soit prêt.
- Hide ne fonctionnait pas en général (je ne sais pas pourquoi)
- Je voulais faire l'inverse, cacher sauf si l'option était cochée.
Donc, cela résout ces trois problèmes pour moi. Nous faisons ce qui suit :
- Retarder l'appel de la fonction
- Cacher le .form-row.field-, pour cacher une ligne entière (je recommande d'utiliser la fonction d'inspection de Chrome pour trouver le nom de la ligne que vous voulez cacher.)
- Nous faisons l'inverse, cachant la section dès que la page est chargée et la réaffichant si la case est cochée.
Voici donc mon code final :
window.addEventListener("load", function() {
(function() {
show_page=false;
django.jQuery(document).ready(function(){
if (django.jQuery('#id_override_timeline').is(':checked')) {
django.jQuery(".form-row.field-next_milestone").show();
show_page=true;
} else {
django.jQuery(".form-row.field-next_milestone").hide();
show_page=false;
}
django.jQuery("#id_override_timeline").click(function(){
show_page=!show_page;
if (show_page) {
django.jQuery(".form-row.field-next_milestone").show();
} else {
django.jQuery(".form-row.field-next_milestone").hide();
}
})
})
})(django.jQuery);
});
J'espère que cela aidera quelqu'un d'autre qui tombe sur ce post !