2015-06-11 55 views
0

我試圖隱藏div#errorLog如果沒有錯誤,並顯示它,如果有。 jQuery檢測到錯誤並且執行正在經歷if語句而沒有問題。但是,執行代碼時,hide()將顯示div,如果它已被隱藏,並且show()將隱藏div(如果已顯示)。爲什麼.show()和.hide()切換,即使我沒有使用切換?

我使用IE 11.它在Firefox中沒有問題。爲什麼show()hide()充當切換?

HTML代碼(不包括母版頁):

<asp:Content ContentPlaceHolderID="Title" runat="server"> 
    <title>Login</title> 
</asp:Content> 

<asp:Content ID="Login" ContentPlaceHolderID="Log_orReg" runat="server"> 
    <h1 class="chosen"><a href="Login.aspx">Login</a></h1> 
    <h1 class="inline">|</h1> 
    <h1 class="notChosen"><a href="Register.aspx">Register</a></h1> 
    <br /> 

    <form id="LoginForm" style="margin: 5px; " runat="server"> 
     <div class="fill">Username:</div><asp:TextBox id="Username" CssClass="textboxes" runat="server" /> 
     <asp:RequiredFieldValidator ID="vldUsername" runat="server" ErrorMessage="You must enter a username." ControlToValidate="Username" Text="*"></asp:RequiredFieldValidator> 
     <br /> 
     <div class="fill">Password:</div><asp:TextBox id="Password" CssClass="textboxes" TextMode="Password" runat="server" /> 
     <asp:RequiredFieldValidator ID="vldPassword" runat="server" ErrorMessage="You must enter a password." ControlToValidate="Password" Text="*"></asp:RequiredFieldValidator> 
     <br /> 
     <asp:button ID="LogReg_btn" CssClass="LogReg_btn" onclick="cmd_submit" runat="server" Text="Login"></asp:button> 
     <div id="errorLog" class="Error_Log" runat="server"> 
      <asp:ValidationSummary ID="ValidationSummary" runat="server" ShowMessageBox="false" DisplayMode="BulletList" ShowSummary="true" ShowValidationErrors="true" /> 
     </div> 
    </form> 
</asp:Content> 

jQuery代碼:

$(document).ready(function() { 
    $('.Error_Log').hide(); 
    var bottom = $(".LogReg_forms").position().top + $('.LogReg_forms').outerHeight(true); 
    var position = parseInt(bottom + 10) + "px"; 

    $(".Error_Log").css('top', position); 

    $(".LogReg_btn").click(function() { 
     var isPageValid = Page_ClientValidate(''); 

     if (isPageValid == true) { 
      $(".Error_Log").hide("fade"); 
     } 
     else { 
      $(".Error_Log").show("fade"); 
     } 
    }); 
}); 
+0

看起來像是因爲您要回發到服務器,並且頁面提交併將按鈕重置爲原來的狀態。或者動畫正在工作並且頁面未回傳? – epascarello

+0

它不回答你的「爲什麼」的問題,但你有一個選擇是使用'toggle'並傳遞一個布爾參數,所以你可以摺疊你的點擊函數到一行:'$(「。Error_Log」) .toggle(!Page_ClientValidate(''))' – bgs264

回答

0

我找到了解決辦法。這個問題是與jQuery版本1.6。如果您遇到此問題,請確保您已更新至最新的jQuery版本。

+0

jQuery 1.6 ???讓人驚訝。是的,絕對是升級的時間! :-o – Simba

相關問題