2009-06-20 56 views
1

我有一个asp.net表单,它有3个文本框和一个asp.net链接按钮控件。我想调用按钮单击事件处理程序方法用户按enter键。我使用asp.net面板和它的默认按钮property.Its工作在IE.But不在其他浏览器如Firefox等。是否有任何其他方法来做到这一点?ASP.NET:在Enter键上调用代码隐藏方法

回答

2

你可以尝试DefaultButton地产(ASP.Net 2.0及以上)。 ASP.Net窗体和面板控件都有一个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哪些链接到其他可能的解决方案。

+0

这会在非IE浏览器中工作吗? 。我尝试了这一点,并在Firefox中失败 – Shyju 2009-06-21 01:19:49

3

这似乎是FF3(不知道)的错误,而是固定在下面给出 脚本保持它在页面的结尾,使其覆盖由ASP.NET提供的WebForm_FireDefaultButton方法。

var __defaultFired = false;

函数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; 

}

相关问题