Bonjour à tous,
Avec des potes, on organise une conférence chaque année qu'on appelle JoomlaDay (si si)
Et là j'étais en train de cogiter pour avoir des filtres sympas à mettre sur la page "Programme".
Concrètement, il y aurait différents filtres (avec dans le HTML des Select ayant chacun bien sûr plusieurs Options).
Et je voulais que le navigateur retienne les filtres lorsqu'on revient sur la page du Programme.
Le script ci-dessous fonctionne (et j'en suis déjà fier ), mais je suis sûr qu'il peut être amélioré.
En particulier pour n'avoir qu'un seul Cookie plutôt que 4 Cookies correspondant aux 4 filtres.
Merci pour vos suggestions
Signé : un jeune padawan en jQuery
Avec des potes, on organise une conférence chaque année qu'on appelle JoomlaDay (si si)
Et là j'étais en train de cogiter pour avoir des filtres sympas à mettre sur la page "Programme".
Concrètement, il y aurait différents filtres (avec dans le HTML des Select ayant chacun bien sûr plusieurs Options).
Et je voulais que le navigateur retienne les filtres lorsqu'on revient sur la page du Programme.
Le script ci-dessous fonctionne (et j'en suis déjà fier ), mais je suis sûr qu'il peut être amélioré.
En particulier pour n'avoir qu'un seul Cookie plutôt que 4 Cookies correspondant aux 4 filtres.
Merci pour vos suggestions
Signé : un jeune padawan en jQuery
Code PHP:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
<script defer>
// script inspired by https://stackoverflow.com/questions/31212030/how-to-save-value-from-select-in-cookie-using-jquery
// note that it needs jquery.cookie.min.js which is therefore called above
jQuery(document).ready(function(){
var selectedcategory = jQuery.cookie("mycategory");
var selectedjour = jQuery.cookie("myjour");
var selectedlevel = jQuery.cookie("mylevel");
var selectedfav = jQuery.cookie("myfav");
// read the Cookie and choose the Option in each Select accordingly
if (selectedcategory) {
jQuery("#category").val(selectedcategory);
}
if (selectedjour) {
jQuery("#jour").val(selectedjour);
}
if (selectedlevel) {
jQuery("#level").val(selectedlevel);
}
if (selectedfav) {
jQuery("#fav").val(selectedfav);
}
// if any of the filters has been memorized then apply filters
if ((selectedcategory) || (selectedjour) || (selectedlevel) || (selectedfav)) {
// update the filters txs to the other script
filterCategory(jQuery('.filtering select.filtrejour').val(), jQuery('.filtering select.filtrecategory').val(), jQuery('.filtering select.filtrelevel').val(), jQuery('.filtering select.filtrefav').val());
}
// save changes for each Select in their respective cookies
jQuery("#category").on("change", function(){
var selection = jQuery(this).val();
jQuery.cookie("mycategory", selection, {expires: 365, path: '/'})
});
jQuery("#jour").on("change", function(){
var selection = jQuery(this).val();
jQuery.cookie("myjour", selection, {expires: 365, path: '/'})
});
jQuery("#level").on("change", function(){
var selection = jQuery(this).val();
jQuery.cookie("mylevel", selection, {expires: 365, path: '/'})
});
jQuery("#fav").on("change", function(){
var selection = jQuery(this).val();
jQuery.cookie("myfav", selection, {expires: 365, path: '/'})
});
});
</script>
Commentaire