За последние 24 часа нас посетили 16485 программистов и 1677 роботов. Сейчас ищут 914 программистов ...

Проблема с панелью пользователя

Тема в разделе "JavaScript и AJAX", создана пользователем zevilz, 14 сен 2012.

  1. zevilz

    zevilz Активный пользователь

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    На сайте (http://yellow-duck.net/) имеется вверху страницы имеется панель входа/регистрации
    Упрощенный код панели
    Код (Text):
    1.  
    2. <div id="toppanel" tabindex="-1">
    3.     <div id="panel">
    4.         <div class="content_panel clearfix_panel">
    5.             <input type='text' id='fld1' size='10' name='req_username' value=''>
    6.             <input type='password' id='fld2' size='10' name='req_password' value=''>
    7.         </div>
    8.     </div>
    9.  
    10.     <div class="login_tab">
    11.         <span id="toggle">
    12.             <a id="open" class="open">Открыть панель</a>
    13.             <a id="close" style="display: none;" class="close">Закрыть панель</a>
    14.         </span>
    15.     </div>
    16. </div>
    Открытие/Закрытие панели осуществляется при помощи скрипта:
    Код (Text):
    1. $(document).ready(function() {
    2.  
    3.     // Сворачиваем панель
    4.     $("#close").click(function(){
    5.         $("div#panel").slideUp("slow");
    6.     });    
    7.  
    8.     // Сворачиваем панель при снятии фокуса с #toppanel
    9.     $("#toppanel").blur(function(){
    10.  
    11. $("*").not("#panel input").focus(function(){
    12.         $("div#panel").slideUp("slow");
    13.         $("#toggle a").toggle();
    14. });
    15.     });
    16.  
    17.     // Сворачиваем панель при снятии фокуса с input
    18.     $("#toppanel input").blur(function(){
    19.  
    20. $("*").not("#panel input").focus(function(){
    21.         $("div#panel").slideUp("slow");
    22.         $("#toggle a").toggle();
    23. });
    24.     });
    25.  
    26.     // Разворачиваем панель
    27.     $("#open").click(function(){
    28.         $("div#panel").slideDown("slow");
    29.     });
    30.  
    31.     // Переключаем кнопки при нажатии
    32.     $("#toggle a").click(function () {
    33.         $("#toggle a").toggle();
    34.     });    
    35.        
    36. });
    открытие/закрытие панели при нажатии на кнопке происходит нормально.
    При закрытии панели при клике вне панели, панель закрывается, кнопка меняется, но при повторном открытии кнопка сначала меняет вид, будто бы панель открыта, при еще одном клике меняет вид будто панель закрыта, и при третьем клике нормально открывается.
    При снятии фокуса с инпутов логина и пароля панель закрывается, причем при фокусе на всем, включая область панели и чекбокс. При повторном открытии - такая же фигня, описанная выше.
    Как сделать так, чтобы при снятии фокуса с элементов панели не было косяка с повторным открытием панели? Как сделать так, чтобы при снятии фокуса с инпутов логина и пароля панель закрывалась только при фокусе области вне панели?