【问题标题】:ASP.NET default buttonASP.NET 默认按钮
【发布时间】:2008-12-02 05:39:10
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net master-pages


    【解决方案1】:

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

    <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>
    

    【讨论】:

    • OP 表示他知道此选项,但想知道是否有更好的方法。我试图在一个有 100 多个页面的网站上解决这个问题。必须将此代码添加到每个内页中,这太乏味了。我们可以在母版页级别做些什么来告诉搜索按钮“永远不要假设这是默认按钮”?
    • -1 因为它不回答问题或帮助回答问题。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      将焦点放在文本框上,

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

      然后

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

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-12-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多