Bonjour tout le monde,
Mon problème est quelque peu délicat à expliquer, je vais essayer d'être le plus clair et précis possible.
Je suis actuellement sur le développement de mon portfolio (pour l'instant en local), et je souhaite y intégrer des fonctionnalités JavaScript type AJAX qui soient sympas à utiliser.
J'ai donc pour le moment ma page d'accueil, munie d'un menu type dock MAC, géré grâce à 2 fichiers JS externes : interface.js et jquery-1.1.3.1.pack.js.
Le problème qui me fait venir sur ce forum se trouve sur une autre fonctionnalité que je souhaite ajouter pour mon accès administrateur (souhaitant développer un back-office en PHP histoire de montrer mes compétences sur ce langage).
J'ai téléchargé sur ce site : http://www.javascriptkit.com/script/...ownpanel.shtml, un "plugin" Javascript qui permet de créer un petit panneau tombant discrètement caché en haut de page. J'ai décidé d'intégrer ceci sur ma page d'accueil et d'afficher mon formulaire de connexion administrateur dans ce même panneau. Jusque là, tout va bien, ça tourne.
Là où ça pêche, c'est que je ledit panneau remonte automatiquement se cacher en haut sur le moindre clic que l'on fait dedans. Ceci est défini dans le code, c'est donc un comportement normal, sauf que je souhaite que cela n'arrive que sur le clic de mon bouton "reset". Autrement dit je souhaite que le panneau reste affiché tant que je n'ai pas décidé de quitter mon formulaire.
Je précise que je suis débutant en AJAX (puisqu'il semblerait que ce genre de fonctionnalité soit de l'AJAX), j'ai déjà fait du JavaScript mais rien de très poussé (contrôle de formulaire, redirection...), ainsi que du PHP et beaucoup de CSS et d'(X)HTML.
Voici le JS gérant le panneau :
var jkpanel = {
controltext: 'Accès Administrateur',
$mainpanel: null, contentdivheight: 0,
openclose:function($, speed){
this.$mainpanel.stop() // Arrête toute animation
if (this.$mainpanel.attr('openstate')=='closed')
this.$mainpanel.animate({top:0}, speed).attr({openstate:'open'})
else
this.$mainpanel.animate({top:-this.contentdivheight+'px'}, speed).attr({openstate:'closed'})
},
init:function(file, height, speed){
jQuery(document).ready(function($){
jkpanel.$mainpanel=$('<div id="adminPanel"><div class="contentdiv"></div><div class="control"></div></div>').prependTo('body')
var $contentdiv=jkpanel.$mainpanel.find('.contentdiv')
var $controldiv=jkpanel.$mainpanel.find('.control').css({cursor:'wait'})
$contentdiv.load(file, '', function($){
var heightattr=isNaN(parseInt(height))?'auto':parseInt(height) +'px'
$contentdiv.css({height:heightattr})
jkpanel.contentdivheight=parseInt($contentdiv.get(0).offsetHeight)
jkpanel.$mainpanel.css({top:-jkpanel.contentdivheight +'px',visibility:'visible'}).attr('openstate','closed')
$controldiv.css({cursor:'hand',cursor:'pointer'})
})
jkpanel.$mainpanel.click(function(){jkpanel.openclose($, speed)})
})
}
}
// Script d'initialisation : jkpanel.init('fichier_à_afficher', 'hauteur_de_la_div_de_contenu', durée_animation)
jkpanel.init('../PHP/admin_access.php', '80px', 500)
Mon CSS : (juste la partie qui concerne le panneau)
#adminPanel { /* Div haute du panneau */
position:absolute;
width:100%;
left:0;
top:0;
visibility:hidden;
z-index:5;
}
#adminPanel .contentdiv{ /* Div contenant le contenu AJAX */
background:url('../PNG/black_bg.png');
color:#FFF;
padding:20px;
}
#adminPanel .control{ /* Div contenant le bouton du panneau */
border-top:2px solid black;
color:#FFF;
font-weight:bold;
text-align:center;
padding-bottom:3px;
height:21px;
line-height:21px;
}
Je pense que la ligne à modifier dans le JS est la suivante : jkpanel.$mainpanel.click(function(){jkpanel.openclose($, speed)
Il faut surement remplacer le "click" par une instruction capable de reconnaître un clic sur le bouton reset seul, mais là je vois pas comment le désigner.
Pouvez-vous m'aider s'il vous plaît ?
Alexandre
Partager