4

我有一个带有搜索框和顶部按钮的母版页。此搜索功能正在接管我所有使用此母版页的 Web 表单的“输入”键。也就是说,如果我有一个使用此母版页的登录页面并且用户输入他们的用户名/密码并点击“输入”,而不是登录用户,系统会执行搜索。

设置默认提交按钮的最佳方法是什么。我可以将所有内容包装在 asp Panels 中并设置 DefaultButton 属性,但这似乎有点乏味。有没有更好的办法?

4

5 回答 5

3

使用表单或面板的默认按钮属性

<form defaultbutton=“button1” runat=“server”&gt;    
    <asp:button id=“button1” text=“Same Page” runat=“server”/>    
    <asp:panel defaultbutton=“button2” runat=“server”&gt;    
       <asp:textbox id=“foo” runat=“server”/>    
       <asp:button id=“button2” runat=“server”/>    
    </asp:panel>    
</form>
于 2008-12-02T05:59:59.623 回答
2

正如您所发现的,当页面上有多个按钮时,默认按钮可能会导致问题。我会接受 Geeks 的建议,但通过删除 setfocus 客户端脚本来简化它,并通过将 keydown 事件添加到搜索文本框和登录文本框来扩展它,以便输入键触发正确的按钮,具体取决于您的用户是否使用搜索框或登录框,或您想要添加 javascript 的任何其他文本框。

如果有一个合理的控件可供用户开始,您可以将焦点设置在加载页面上(如果您愿意,可以在代码后面)为用户节省一些鼠标工作或选项卡,但否则用户与之交互的控件应该确定页面的流程和回车键的作用。

于 2008-12-02T06:56:37.373 回答
0

将焦点放在文本框上,

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

接着

在最后一个文本框的 keydown 事件中,您可以执行以下操作:

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

于 2008-12-02T05:54:51.600 回答
0

这就是我们在我们的项目上尝试过的,似乎很有效。我将 Search asp:Button 更改为 asp:LinkBut​​ton。然后我添加了一些 CSS 样式给它一个背景图像,使它看起来像一个按钮。页面显然没有使用 LinkBut​​tons 来确定按下 Enter 时哪个 Button 是默认操作。甜蜜的部分是 LinkBut​​ton 仍然可以具有与之关联的单击操作,因此我不必更改任何代码隐藏内容。

于 2011-04-08T16:27:19.630 回答
0

您可以将搜索框和提交按钮放入母版页上的 IFRAME,而不是使用 javascript 来操作页面。如果焦点在 iframe 点击将提交搜索表单,如果用户在页面内的主表单上,他们将提交普通页面。

<iframe>src 属性指向一个小的自包含 aspx 页面,其中包含您的文本框和提交按钮,该按钮重定向到您的搜索结果表单。

于 2008-12-02T10:06:32.903 回答