Je voudrais étendre mon composant avec quelques interactions. Pour ce faire, j'essaie d'afficher les champs d'un formulaire uniquement si nécessaire. Cela fonctionne bien avec showon
- déclarations dans mon form.xml
.
Maintenant, j'aimerais afficher un champ uniquement si un appel AJAX
-, déclenché par un clic sur un bouton, renvoie false
.
Bien sûr, je pourrais le coder en dur dans mon fichier de mise en page (du moins, je pense que je pourrais). Mais peut-être y at-il un moyen que je
form.xml
false
form.xml
comme indicateur pour d’autres éléments comme showon = 'myhiddenfield:1'
Des idées à ce sujet?
Eh bien, vous pouvez attacher vos fonctions masquer/afficher dans le paramètre success de la méthode ajax.
var showMethod = function () {
// show method code...
}
var hideMethod = function () {
// hide method code...
}
$.ajax({
type : 'POST',
data : request,
success : function(response) {
if (response.yourvalue == false) {
showMethod();
} else {
hideMethod();
}
}
});
Comme il semble que les autres champs doivent également être affectés si votre champ principal sera visible ou non, vous pouvez simplement appliquer la même chose à la fois pour tous ces champs, et n'attendez pas de basculer d'abord sur la visibilité de votre champ principal pour décider. si les autres doivent afficher.
Je suis un peu confus maintenant avec ce que vous voulez ... Vous ne pouvez pas cacher quelque chose dans le xml, seulement attacher certains paramètres, cela se traduira par certaines fonctionnalités pour chaque sortie de champ. Le showon rendra un champ visible lorsque vous avez une certaine valeur sur un autre champ. Donc, les champs seront cachés jusqu'à ce que cela se produise. Ceci est js et css. Vous pouvez également utiliser Labelclass pour attacher des classes spécifiques à vos champs https://docs.joomla.org/Form_field#Common_attributes . Généralement, derrière montrer/cacher des éléments se cache css.
Par contre, je n’ai pas essayé cela, mais vous pourriez peut-être simplement définir le paramètre showon dans les champs que vous voulez afficher, en fonction de la valeur de votre "champ ajax" et voir si ceux-ci apparaîtront lorsque vous obtiendrez false.