我目前在asp.net页面上有2个面板。我有一个登录和注册面板,我为每个面板设置了DefaultButton="btn1
属性。如果你完成了任何一种形式(并专注于那种形式),它总是会触发注册按钮,这是页面上的第一个按钮/面板。以下是我的代码:
<asp:Panel runat="server" ID="pnlRegister" DefaultButton="btn1">
<asp:TextBox runat="server" TextMode="Email" ID="txtEmail" placeholder="Email" ValidateRequestMode="Enabled" />
<asp:TextBox runat="server" TextMode="Password" ID="txtPass" placeholder="Password" /> <br /><br />
<asp:Button runat="server" ID="btn1" OnClick="Register" Text="Register" />
</asp:Panel>
<asp:Panel runat="server" ID="pnlLogin" DefaultButton="btn2">
<asp:TextBox runat="server" ID="txtEmailLog" placeholder="Email Address" /> <br />
<asp:TextBox runat="server" TextMode="Password" ID="txtPassLog" placeholder="Password" /> <br /> <br />
<asp:Button runat="server" ID="btn2" OnClick="Login" Text="Login" />
</asp:Panel>
编辑细节:
没有错误,它根本没有按预期工作。
{ID:1}}属性应该在键入'enter'时提交默认按钮,同时聚焦在面板内的字段上。例如,当尝试使用DefaultButton
面板上的登录框并按Enter键时,提交pnlLogin
按钮(这是注册功能)而不是btn1
(这是登录功能)。
我希望这有助于清除混淆而不是添加它。
答案 0 :(得分:0)
将您的按钮更改为:
<asp:Button runat="server" UseSubmitBehavior="true" ID="btn1" OnClick="Register" Text="Register" />
<asp:Button runat="server" UseSubmitBehavior="true" ID="btn2" OnClick="Login" Text="Login" />
UseSubmitBehavior使您的按钮对与您的代码对应的提交操作(单击输入)作出反应,现在您的代码通过浏览器的默认样式做出反应。
希望它有所帮助。
答案 1 :(得分:0)
这不是一个解决方案,而且我还在寻找一个,但是为了绕过这个问题,我最终隐藏了一个面板,并根据用户想要完成的功能在表单之间切换。如果我找到更好的解决方案,我会在这里回复。