ASP.NET:在表单中按Enter键按下调用代码隐藏方法

时间:2009-06-20 10:28:47

标签: javascript asp.net

我有一个asp.net表单,它有3个文本框和一个asp.net链接按钮控件。我想在用户按下回车键时调用按钮单击事件处理程序方法。我使用了asp.net面板及其默认按钮属性。它在IE中工作。但不在其他浏览器中,如firefox等。有没有其他方法可以这样做?

4 个答案:

答案 0 :(得分:3)

这似乎是FF3的一个错误(不确定),但修复的脚本如下所示 将其保留在页面的末尾,以便它覆盖ASP.NET呈现的WebForm_FireDefaultButton方法。

    var __defaultFired = false;

function WebForm_FireDefaultButton(event,target){     var element = event.target || event.srcElement;

if (!__defaultFired && event.keyCode == 13 && !(element && (element.tagName.toLowerCase() == "textarea"))) {
    var defaultButton;

    if (__nonMSDOMBrowser)
        defaultButton = document.getElementById(target);
    else
        defaultButton = document.all[target];

    if (defaultButton) {
        if(typeof(defaultButton.click) != "undefined")
            defaultButton.click();
        else
            eval(unescape(defaultButton.href.replace("javascript:", "")));

        event.cancelBubble = true;

        if (event.stopPropagation) event.stopPropagation();
        return false;
    }
}
return true;

}

答案 1 :(得分:3)

您可以尝试 DefaultButton 属性(ASP.Net 2.0及更高版本)。 ASP.Net表单和Panel控件都有一个 DefaultButton 属性。默认操作意味着输入键应触发按钮单击。

<form id="Form1" defaultbutton="SubmitButton" runat="server">
  <asp:panel id="panel1" defaultbutton="anotherbutton" runat="server">
  </asp:panel>
</form>

可以通过添加以下内容来解决已知的FireFox问题:UseSubmitBehavior="False" 到你的提交按钮。这个Blog描述了UpdatePanel中的问题和解决方案,它也可以在这里工作。

另请查看此question,其中包含指向其他可能解决方案的链接。

答案 2 :(得分:1)

答案 3 :(得分:0)

更好的选择是使用AJAX.NET和页面方法来执行此操作。请检查此http://www.singingeels.com/Articles/Using_Page_Methods_in_ASPNET_AJAX.aspx