我有一个带有搜索框和顶部按钮的母版页。此搜索功能正在接管我所有使用此母版页的 Web 表单的“输入”键。也就是说,如果我有一个使用此母版页的登录页面并且用户输入他们的用户名/密码并点击“输入”,而不是登录用户,系统会执行搜索。
设置默认提交按钮的最佳方法是什么。我可以将所有内容包装在 asp Panels 中并设置 DefaultButton 属性,但这似乎有点乏味。有没有更好的办法?
我有一个带有搜索框和顶部按钮的母版页。此搜索功能正在接管我所有使用此母版页的 Web 表单的“输入”键。也就是说,如果我有一个使用此母版页的登录页面并且用户输入他们的用户名/密码并点击“输入”,而不是登录用户,系统会执行搜索。
设置默认提交按钮的最佳方法是什么。我可以将所有内容包装在 asp Panels 中并设置 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>
正如您所发现的,当页面上有多个按钮时,默认按钮可能会导致问题。我会接受 Geeks 的建议,但通过删除 setfocus 客户端脚本来简化它,并通过将 keydown 事件添加到搜索文本框和登录文本框来扩展它,以便输入键触发正确的按钮,具体取决于您的用户是否使用搜索框或登录框,或您想要添加 javascript 的任何其他文本框。
如果有一个合理的控件可供用户开始,您可以将焦点设置在加载页面上(如果您愿意,可以在代码后面)为用户节省一些鼠标工作或选项卡,但否则用户与之交互的控件应该确定页面的流程和回车键的作用。
将焦点放在文本框上,
Page.RegisterStartupScript("SetFocus", "<script>document.getElementById('" + TextBox1.ClientID + "').focus();</script>");
接着
在最后一个文本框的 keydown 事件中,您可以执行以下操作:
If e.KeyCode = Keys.Enter Then Me.Button1.Select() End If
这就是我们在我们的项目上尝试过的,似乎很有效。我将 Search asp:Button 更改为 asp:LinkButton。然后我添加了一些 CSS 样式给它一个背景图像,使它看起来像一个按钮。页面显然没有使用 LinkButtons 来确定按下 Enter 时哪个 Button 是默认操作。甜蜜的部分是 LinkButton 仍然可以具有与之关联的单击操作,因此我不必更改任何代码隐藏内容。
您可以将搜索框和提交按钮放入母版页上的 IFRAME,而不是使用 javascript 来操作页面。如果焦点在 iframe 点击将提交搜索表单,如果用户在页面内的主表单上,他们将提交普通页面。
<iframe>
src 属性指向一个小的自包含 aspx 页面,其中包含您的文本框和提交按钮,该按钮重定向到您的搜索结果表单。