JQuery UI: Désactiver accordéon onglet?
J'ai un JQuery UI accordion qui contient les différentes parties de l'utilisateur de flux de travail. Je voudrais désactiver accordéon "onglets" que l'utilisateur n'a pas encore atteint. (Donc, si l'utilisateur n'a pas signé encore, il ne peut pas encore publier de contenu, etc.) Puis, à mesure que l'utilisateur complète les mesures nécessaires, en plus d'onglets sera activé.
Est-il un moyen de faire cela? Cela ne fonctionne pas, même comme un moyen de prévenir les onglets de changer:
$("#accordion").accordion({
changestart: function(event, ui) {
return false;
}
});
OriginalL'auteur Nick Heiner | 2010-05-02
Vous devez vous connecter pour publier un commentaire.
Vous devriez ajouter/supprimer la catégorie "ui-state-désactivé" à chaque élément d'en-tête (c'est à dire "<h3>") que vous souhaitez activer/désactiver. Ensuite, utilisez:
À ajouter/supprimer une classe dyanamically, utilisation:
Vous pouvez ajouter un meaningul attribut "id" de chaque élément d'en-tête pour simplifier le "sélecteur". Par exemple, "étape 1", "2", "n" pour chaque étape, l'utilisateur doit parcourir le long du flux de travail.
Vous pouvez essayer ce qui suit si vous êtes positif à propos de la position de l'onglet à désactiver:
Également noter que l'utilisation de "ui-state-désactivé" est en fait un sens parce qu'il va rendre l'en-tête gris (ou quel que soit votre thème fait handicapés choses ressembler).
Une autre note, si l'onglet vous sont dynamiquement la désactivation est actuellement active, il ne sera pas faire quelque chose de spécial (c'est à dire de ne pas s'effondrer ou activer un autre onglet). Vous pouvez ajouter de la logique supplémentaire pour activer un onglet par défaut ou n'importe quoi d'autre.
Il semble que l'ajout de la classe est assez pour empêcher l'activation. Je n'ai pas besoin d'ajouter un gestionnaire pour
beforeactivate
et retournera false si je vois la classe.OriginalL'auteur
Cela semble comme il devrait être plus facile. Mais voici une solution:
La première chose que nous avons besoin de garder une trace de qui est, les panneaux peuvent être légalement ouverte:
Ensuite, lorsque vous appelez votre accordéon, faites comme ceci
Alors, si vous souhaitez autoriser l'utilisateur à accéder à la troisième panneau, vous feriez:
Un utilisateur peut absolument désactiver une telle chose en utilisant quelque chose comme Greasemonkey pour modifier le JavaScript pour le site.
bien sûr, et avec js console que l'on peut jouer autour, de modifier le dom, d'exécuter du code js et ainsi de suite... Dois-je me préoccuper de cela, lorsque j'ai envie d'une belle représentation d'un accordéon ?
Tommaso, je ne suis pas sûr de comprendre votre point de vue, ou de la question.
Pour le faire fonctionner correctement, vous devez utiliser le "beforeActivate de l'événement au lieu de "changement" et l'ont renvoyer false dans le cas où cet onglet ne doit pas être accessible.
OriginalL'auteur
OriginalL'auteur
Cela a fonctionné pour moi:
OriginalL'auteur
Diego Augusto Molina cloué. ui-state-désactivé classe est le chemin à parcourir: http://api.jqueryui.com/theming/css-framework/
Considérer ce morceau de code qui permet à l'utilisateur de revenir en arrière, mais de ne pas aller à la prochaine accordéon onglet. Nous le faisons uniquement de la programmation, après validation:
OriginalL'auteur
Aucune des solutions de contournement a vraiment fonctionné pour moi. Ce serait beaucoup plus agréable si il a été pris en charge hors de la boîte, bien sûr, mais voici la solution que j'ai utilisée. J'ai lié l'événement pour un événement personnalisé et ajouté mon propre événement de clic qui peut faire tout ce que la logique et de déclencher la customClick de l'événement si la navigation est autorisée.
JS:
Ou de vérifier le travail jsfiddle ici: http://jsfiddle.net/hWTcw/
OriginalL'auteur
L'onglet peut être facilement désactiver comme ci-dessous:
Pour l'activer, vous pouvez utiliser javascript pour l'activer de nouveau.
OriginalL'auteur
Une jolie solution de facilité est de l'accaparement de l'en-tête (
<h3>
) par le contenu:De cette façon, vous pouvez activer/désactiver avec le même code ou masquer le panneau, tous ensemble, avec:
OriginalL'auteur