Je crée un formulaire multif étapes à l'aide de JQuery et j'essaie de ne montrer que le bouton Lorsque vous le ciblez dans une instruction IF à l'aide du Quelqu'un peut-il me dire comment vous assurer que le bouton n'est visible que lorsque la classe html p> css p> jQuery p > #prev code> lorsque la classe active n'est pas sur le premier enfant. Par défaut, j'ai ajouté Affichage: Aucun code> à #PREV code> Pour le masquer sur la charge, mais je suis en difficulté pour l'afficher lorsque le .active code> classe est ajouté sur les autres sections. est (": non (: premier enfant)) code> Ça fonctionne mais ne montre que lorsque la classe active est ajoutée sur # step3 Code>. P> .active code> est sur chaque section, sauf # step1 code>? $('.multi-form-actions button').on('click', function() {
var el = $(this).attr('id');
var active = $('.multi-step-section.active');
if(active.is(":not(:first-child)")) {
$('#prev').show();
}
active.removeClass('active');
if(el == 'prev') {
active.prev('.multi-step-section').addClass('active');
}
else if(el = 'next') {
active.next('.multi-step-section').addClass('active');
}
});
3 Réponses :
Il y a quelques points à faire pour faire ce travail:
Vous devrez également gérer le cas lorsque toutes les étapes sont passées, mais cela est hors de portée de cette question. P>
J'ai également simplifié le code pour vous débarrasser de la redondance . p>
p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="multi-step-wrapper" id="multi-step">
<div id="progressbar">
<span></span>
</div>
<div class="steps-inner">
<div class="multi-step-section active" id="step1">step1</div>
<div class="multi-step-section" id="step2">step2</div>
<div class="multi-step-section" id="step3">step3</div>
<div class="multi-step-section" id="step4">step4</div>
<div class="multi-step-section" id="step5">step5</div>
<div class="multi-step-section" id="step6">step6</div>
<div class="multi-form-actions">
<button id="prev" type="button">Back</button>
<button id="next" type="button">Next</button>
</div>
</div>
</div>Essayez quelque chose comme ceci qui veillera également à ce qu'il ya une prochaine étape active pour activer.
p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="multi-step-wrapper" id="multi-step">
<div id="progressbar">
<span></span>
</div>
<div class="steps-inner">
<div class="multi-step-section active" id="step1"></div>
<div class="multi-step-section" id="step2"></div>
<div class="multi-step-section" id="step3"></div>
<div class="multi-step-section" id="step4"></div>
<div class="multi-step-section" id="step5"></div>
<div class="multi-step-section" id="step6"></div>
<div class="multi-form-actions">
<button id="prev" type="button">Back</button>
<button id="next" type="button">Next</button>
</div>
</div>
</div>Donc, quelques réponses à votre logique.
= code> sur l'autre si. li>
- Définissez le
actif code> sur le nouveau actif une fois qu'il est ajusté. LI>
- Vérifiez si l'actif est le premier élément
après fort> il a été ajusté, pas avant, il est donc précis. li>
- en tant que bonus, a également ajouté la cachette de la prev si elle est remplacée vers le premier élément. Li>
ol>
p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="multi-step-wrapper" id="multi-step">
<div id="progressbar">
<span></span>
</div>
<div class="steps-inner">
<div class="multi-step-section active" id="step1">a</div>
<div class="multi-step-section" id="step2">b</div>
<div class="multi-step-section" id="step3">c</div>
<div class="multi-step-section" id="step4">d</div>
<div class="multi-step-section" id="step5">e</div>
<div class="multi-step-section" id="step6">f</div>
<div class="multi-form-actions">
<button id="prev" type="button">Back</button>
<button id="next" type="button">Next</button>
</div>
</div>
</div>
$ (".steps-inner div: premier enfant") .hasclass ("actif"); Je pense que cela devrait fonctionner
Êtes-vous sûr que le problème est avec ce conditionnel et non le suivant qui définit la classe active sur un élément, que ce soit le premier ou le dernier élément?
Il y a aussi une faute de frappe avec le dernier
si code> à l'aide de= code> au lieu de=== code>