ASP.NET默认按钮

4
我有一个带有搜索框和按钮的主页面。这个搜索功能正在接管使用此主页面的所有Web表单的“enter”键。也就是说,如果我有一个登录页面使用此主页面,用户输入用户名/密码并按下“enter”键,系统将不会登录用户而是执行搜索操作。
如何设置默认提交按钮? 我可以将所有内容包装在ASP面板中并设置DefaultButton属性,但这似乎有点繁琐。有更好的方法吗?
5个回答

3

使用表单或面板的defaultbutton属性。

<form defaultbutton=“button1” runat=“server”>    
    <asp:button id=“button1” text=“Same Page” runat=“server”/>    
    <asp:panel defaultbutton=“button2” runat=“server”>    
       <asp:textbox id=“foo” runat=“server”/>    
       <asp:button id=“button2” runat=“server”/>    
    </asp:panel>    
</form>

2
原帖作者表示他知道这个选项,但想知道是否有更好的方法。我正在尝试在一个有100多个表单页面的网站上解决这个问题。如果必须在每个内部页面上都添加此代码,那将会非常繁琐。在母版页级别上有什么我们可以做的来告诉搜索按钮“永远不要假设这是默认按钮”吗? - Jesse Webb
-1 因为它没有回答问题或帮助回答问题。 - Lisa

2
正如您所发现的,如果页面上有多个按钮,那么默认按钮可能会引起问题。我建议采纳Geeks的建议,但简化掉setfocus客户端脚本,并添加keydown事件到搜索文本框和登录文本框中,以便根据用户使用的是搜索框还是登录框(或任何其他文本框),正确触发相应的按钮。您可以在页面加载时(如果愿意,在代码后台)设置焦点,以节省用户一些鼠标操作或按Tab键的时间,但否则,用户正在交互的控件应确定页面的流程以及回车键的功能。

0
这是我们在项目中尝试过的方法,看起来很有效。我将搜索 asp:Button 更改为 asp:LinkButton。然后,我添加了一些 CSS 样式,以给它一个背景图像,使其看起来像一个按钮。页面显然不使用 LinkButtons 来确定按 Enter 时默认操作的按钮。好处是 LinkButton 仍然可以与点击操作相关联,因此我不必更改任何代码后台内容。

0

将焦点设置在文本框上,

Page.RegisterStartupScript("SetFocus", "< script >document.getElementById('" + TextBox1.ClientID + "').focus();< /script >");

然后

在最后一个文本框的keydown事件中,您可以这样做:

如果e.KeyCode = Keys.Enter Then Me.Button1.Select() End If


0
不必使用JavaScript来操作页面,您可以将搜索框和提交按钮放入主页面上的IFRAME中。如果焦点在iframe中,则单击将提交搜索表单;如果用户在页面内的主要表单上,则将提交正常页面。 <iframe> src属性指向一个小的自包含aspx页面,其中包含您的文本框和提交按钮,该页面重定向到您的搜索结果表单。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接