【问题标题】:Enterpress event in ASP.NET & jQuery click simulationASP.NET & jQuery 点击模拟中的 Enterpress 事件
【发布时间】:2009-12-29 21:21:10
【问题描述】:

我的页面上有两个表单元素,它们充当流畅的登录面板。当您激活面板时,您可以输入您的电子邮件地址和密码进行登录。在它们旁边是一个<asp:LinkButton...,它带有一个绑定为单击处理程序的 C# 函数。该功能将发布到另一个登录页面(我们必须根据我们的应用程序与其他站点的交互方式来执行此操作)并设置一些登录 cookie。当我输入我的凭据并实际单击按钮时,一切正常。当我输入我的电子邮件,然后我的密码,然后按 [ENTER] 键时,登录按钮的单击处理程序不会触发。好的,那又怎样?我以前处理过这个。以下是我尝试解决此问题的所有方法没有成功


在登录按钮后添加了一个额外的隐藏文本框

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

没有成功。


在表单上设置DefaultButton 属性(因为我在 MasterPage 中):

<form DefaultButton="lbLogin">

没有成功。


将我的字段包装在 &lt;asp:Panel ... &gt; 中并设置 DefaultButton 属性

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

没有成功。


开始通过jQuery抓包:

// 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,但仍然一无所获。


现在,这是唯一似乎可行的事情,它涉及使用 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','')

【问题讨论】:

    标签: c# asp.net jquery events


    【解决方案1】:
    <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>
    

    瞧。

    【讨论】:

    • 所以看起来你所做的是让我的真实按钮和隐藏的&lt;asp:Button&gt; 都触发相同的处理程序,并且您将DefaultButton 设置为在 hidden 按钮。有效! +10000
    猜你喜欢
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多