2009-12-29 24 views
1

我的頁面上有兩個表單元素,它們充當了一個流暢的登錄面板。當您激活面板時,您可以輸入您的電子郵件地址和密碼進行登錄。在它們旁邊是一個<asp:LinkButton...,並將C#函數綁定爲點擊處理程序。該功能將發佈到另一個登錄頁面(我們必須根據我們的應用與其他站點的交互方式這樣做)並設置一些登錄cookie。當我進入我的credentails並點擊按鈕時,一切正常。當我輸入我的電子郵件,然後輸入我的密碼,然後按[ENTER]鍵,登錄按鈕的點擊處理程序不會觸發。好的,那是什麼?我以前處理過這個問題。這裏是所有的我試圖用沒有成功解決這個問題的方法:ASP.NET中的Enterpress事件和jQuery點擊模擬


增加了額外的隱藏文本框後的登錄按鈕

<asp:TextBox ID="tb1" runat="server" Style="display:none; visibility:hidden;"></asp:TextBox> 

沒有成功。


設置窗體上的DefaultButton屬性(因爲我在一個母版):

<form DefaultButton="lbLogin"> 

沒有成功。


包裹着我在<asp:Panel ... >字段,設置DefaultButton屬性

<asp:Panel ID="pnlFields" DefaultButton="lbLogin" runat="server">... my stuff here ...</asp:Panel> 

沒有成功。


開始通過jQuery捕獲enterpress:

// if I hit enter on ANY input, simulate a click of the login button 
$(".login-fields input").keypress(function(e) { 
    if ((e.which && e.which === 13) || (e.keyCode && e.keyCode === 13)) { 
    $(".btnLogin").click(); 
    return false; 
    } 
}); 

$(".btnLogin").click();沒有工作,所以我嘗試$(".btnLogin").trigger("click");。不好。我也試過$(".btnLogin").submit();,我知道這是行不通的(但我仍然試過)。

由於有一個return false這只是沒有做什麼,所以我刪除它,並再次嘗試的場景。沒有骰子。

我讀過之前keypress可能不是一個好的JavaScript事件,所以我試着keyup以及上面的場景,仍然沒有任何東西。


現在,這裏的ONLY的事情,似乎工作,它涉及到使用JavaScript eval()

// if I hit enter on ANY input, simulate a click of the login button 
$(".login-fields input").keypress(function(e) { 
    if ((e.which && e.which === 13) || (e.keyCode && e.keyCode === 13)) { 
    eval($(".btnLogin").attr("href")); // BAD! right? 
    } 
}); 

有誰知道我能得到這個工作沒有做JS中的eval()?作爲參考,這是產生的登錄鏈接的href實際:

javascript:__doPostBack('ctl00$lbLogin','') 

回答

2
<asp:Panel runat="server" ID="pnlWrapper" DefaultButton="btnHidden"> 
    <asp:LinkButton runat="server" ID="btnVisible" Text="Login" OnClick="btnVisible_Click" /> 
    <asp:Button runat="server" ID="btnHidden" style="display:none;" OnClick="btnVisible_Click" /> 
</asp:Panel> 

瞧。

+0

所以它看起來像你做的是我的真實按鈕和一個隱藏的''都激發相同的處理程序,並設置'DefaultButton'在** hidden **按鈕上觸發。有效! +10000 – 2009-12-29 21:34:03