2008-12-02 121 views
4

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

什么是设置默认提交按钮的最佳途径。我可以在ASP面板中包装所有东西,并设置DefaultButton属性,但这看起来有点乏味。有没有更好的办法?

回答

0

组焦点上的文本框中,

Page.RegisterStartupScript( “SetFocus的”, “<脚本>的document.getElementById('” + TextBox1.ClientID +“').focus(); </SCRIPT> “);

然后

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

如果e.KeyCode = Keys.Enter然后 Me.Button1.Select() 结束如果

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

的OP指出这一点,他知道这个选项,而是想知道是否有更好的方法。我正试图在网页上用100多页的表单解决这个问题。必须将此代码添加到每个内部页面将太乏味了。我们可以在母版页级别上做些什么来告诉搜索按钮'永远不要假设这是默认按钮'? – 2011-04-08 15:28:24

2

正如你已经发现默认的按钮可能会导致问题时,页面上有多个按钮。我想借此极客建议,但通过移除SETFOCUS客户端脚本简化它,并通过添加keydown事件既搜索文本框和登录文本框扩展它使得根据,如果你的用户使用搜索回车键触发正确的按钮框或登录框,或任何其他文本框你想添加的JavaScript来。

您可以设置专注于加载页面(如果您喜欢,请在后面的代码中)以保存用户的某些鼠标工作或选项卡,如果有合理的控件供用户启动,但否则用户正在进行交互的控件与应该确定页面的流程和输入键做什么。

0

而不是使用JavaScript来操纵页面,你可以把搜索框和提交按钮进入主页上的IFRAME。如果焦点位于iframe中,点击将提交搜索表单,如果用户位于页面内的主表单上,他们将提交正常页面。

的 src属性指向一点自我包含的牵着你的文本框的aspx页面,并提交按钮,重定向到搜索结果的形式。

0

这就是我们试图在我们的项目,似乎工作。我将Search asp:Button更改为一个asp:LinkBut​​ton。然后,我添加了一些CSS样式,使它看起来像一个按钮的背景图像。当按Enter键时,LinkBut​​ton显然不会被页面用于确定哪个Button是默认操作。甜蜜的部分是,LinkBut​​ton仍然可以执行与它们相关的点击操作,所以我不必更改我的任何代码隐藏内容。