我的頁面上有兩個表單元素,它們充當了一個流暢的登錄面板。當您激活面板時,您可以輸入您的電子郵件地址和密碼進行登錄。在它們旁邊是一個<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','')
所以它看起來像你做的是我的真實按鈕和一個隱藏的''都激發相同的處理程序,並設置'DefaultButton'在** hidden **按鈕上觸發。有效! +10000 –
2009-12-29 21:34:03