J'utilise jQuery pour basculer entre les panneaux de recherche «simple» et «avancé» en faisant glisser les panneaux vers le haut ou vers le bas. Après la diapositive, je veux définir le focus d'entrée pour le premier champ, mais cela provoque le panneau à vide sur IE7. Cela n'arrive pas sur FF 3.5.1Contenu masqué lors de l'utilisation de jQuery sur IE7
Le code original utilise ASP.NET mais j'ai réussi à le reproduire avec du HTML et du JavaScript simples ci-dessous. Ma première tentative était basée sur des tables plutôt que sur des divs, mais le même problème s'est produit.
Je pensais que c'était peut-être le bug de peekaboo mais j'ai essayé quelques-unes des corrections suggérées (position: relative, zoom: 1) mais pas de chance. Lorsque la page de démonstration est ouverte, la fonction de recherche simple est affichée. Lorsque vous cliquez sur le bouton 'Avancé', le panneau avancé glisse vers le bas mais est masqué. Si vous redimensionnez la fenêtre, elle s'affiche à nouveau. Suppression de l'appel jquery() à focus() résout le problème.
$(document).ready(function() {
$("#btnSwitchAdvanced").click(function() {
$("#simpleSearchPanel").slideUp(200, function() {
$("#advSearchPanel").slideDown(500, function() {
$("#txtASDescription").focus();
});
});
});
$("#btnSwitchSimple").click(function() {
$("#advSearchPanel").slideUp(200, function() {
$("#simpleSearchPanel").slideDown(500, function() {
$("#txtSimpleSearch").focus();
});
});
});
$("#advSearchPanel").hide();
});
.criteriaRow
{
clear:both;
}
.criteriaLabel
{
float:left;
width:200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="searchPanel" style="background-color: #dcdcdc; margin-top: 5px;">
<div id="searchCriteria">
<div id="simpleSearchPanel">
<span>Simple Search</span>
<input type="text" id="txtSimpleSearch" />
<input type="button" id="btnSwitchAdvanced" value="Switch to Advanced" />
</div>
<div id="advSearchPanel">
<span>Advanded Search</span>
<div>
<div class="criteriaRow">
<div class="criteriaLabel">
<span id="lblASDescription">Description:</span>
</div>
<div class="criteriaInput">
<input type="text" id="txtASDescription" />
</div>
</div>
<div class="criteriaRow">
<div class="criteriaLabel">
<span id="lblASId">Id:</span>
</div>
<div class="criteriaInput">
<input name="txtASId" type="text" id="txtASId" />
</div>
</div>
</div>
<div>
<div id="criteriaActions" style="float:left;">
<input type="button" id="btnSwitchSimple" value="Switch To Simple" />
</div>
</div>
</div>
</div>
</div>
PS: Bien que je suis relativement un noob ici, vous pouvez envisager d'utiliser le patha complet pour jquery CDN de google, de sorte que les gens peuvent copier et coller votre code à utiliser immédiatement: – Matrym
Je mets un -1 sur cette réponse parce que ça ne résout pas le problème. Il change la fonctionnalité SLIDE en SHOW/HIDE. Le gars demande clairement de faire fonctionner SLIDE correctement. – Joshua
@Josh: Rappelez-moi de ne pas ajouter d'informations à une question la prochaine fois. – Matrym