2012-10-06 37 views
1

我有一個登錄表單。當輸入集中時,通過添加一個css類來顯示「忘記的密碼」和「記住我」元素,當它們模糊時,通過移除類「sho」來再次隱藏元素。我想的元素,以保持類「show」如果我點擊其中任意一個或登錄鏈接除非特定元素被點擊,否則觸發jQuery模糊功能

$(document).ready(function() { 
    $('.login *').focus(showlogin); 
    $('.login *').blur(hidelogin); 
}); 


function showlogin(){ 
    $('.login .hidden').addClass("show"); 
} 

function hidelogin(){ 
    $('.login .hidden').removeClass("show"); 
} 

HTML:

<form class="login"> 
    <input type="text"/> 
    <input type="password"/> 
    <a class="loginbutton" href="#">Log in</a> 
    <br /> 
    <a class="hidden" href="#">Forgotten password</a> 
    <label class="hidden"><input type="checkbox" /> Remember me</label> 
</form> 
+0

這將是有益的,如果上傳你的CSS代碼 – polin

+0

CSS中一種無關緊要的,這是我之後的觸發器,我會更新我的問題。 – Himmators

回答

1

而不是外結合blur,綁定到點擊登錄表單。

下面是一些代碼,我有我的頁面,關閉我的登錄框,當我點擊之外,你可以將它適應您的需求:

$(document).mousedown(function (e) { 
     if ($(e.target).closest("#signin").length == 0) { 
      $(".signin").removeClass("menu-open"); 
      $("fieldset#signin_menu").hide(); 
     } 
    }); 
+0

這是一個好主意!我應該如何做到這一點,而不是每一次點擊觸發它? – Himmators

+1

你沒有。它會在每次點擊時觸發,但如果這些字段已被隱藏,則不會有任何影響。但是如果你願意,你可以使用'unbind'來移除調用你的函數的事件處理程序。但是,您必須將其添加回'showLogin'函數中。 – Barmar

+0

我嘗試了選擇器$('*')。not('。login')。click(hidelogin);'and'$('*:not(.login)')。click(hidelogin);'but it似乎無論如何都會觸發......不知道我該怎麼辦...... – Himmators

相關問題