加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何在ASP.Net中设置TextBox的默认按钮?

发布时间:2020-12-16 03:58:28 所属栏目:asp.Net 来源:网络整理
导读:我有一个页面有两个按钮,btnSearch和btnAddUser. aspx页面如下.如您所见,默认按钮是btnAddUser.但是当我在文本框txtFilter中键入内容时,我想将默认按钮设置为btnSearch.我添加了一个 JavaScript函数clickButton,并在page_load中添加了以下代码.问题是当我在
我有一个页面有两个按钮,btnSearch和btnAddUser. aspx页面如下.如您所见,默认按钮是btnAddUser.但是当我在文本框txtFilter中键入内容时,我想将默认按钮设置为btnSearch.我添加了一个 JavaScript函数clickButton,并在page_load中添加了以下代码.问题是当我在文本框中输入内容后按Enter键时,单击btnSearch和btnAddUser.我有什么办法可以不点击btnAddUser.

txtFilter.Attributes.Add("onkeypress","return clickButton(event,'" + btnSearch.ClientID + "')");

<asp:Panel ID="MainPanel" runat="server" DefaultButton="btnAddUser">
    <table align="center" width="900">
        <tr>
            <td align="left" width="70%">
                <asp:TextBox ID="txtFilter" runat="server" Width="200"></asp:TextBox>
                <asp:Button ID="btnSearch" runat="server" Text="Search" 
                    onclick="btnSearch_Click" CausesValidation="false" />
            </td>
            <td align="right" width="30%">
                <asp:Button ID="btnAddUser" runat="server" Text="Add User" Width="85px" 
                    CausesValidation="False" onclick="btnAddUser_Click" />
            </td>
        </tr>
        <tr>
...
</asp:Panel>

function clickButton(e,buttonid) {
            var evt = e ? e : window.event;
            var bt = document.getElementById(buttonid);
            if (bt) {
                if (evt.keyCode == 13) {
                    bt.click();
                    return false;
                }
            }
        }

更新:
谷歌搜索后,我找到了一个解决方案如下.看起来很有效.但它不适用于Firefox?有谁知道如何解决它?

function clickButton(e,buttonid) {
            var evt = e ? e : window.event;
            var keycode = evt.keyCode || evt.which || evt.charCode;
            var bt = document.getElementById(buttonid);
            if (bt) {
                if (keycode == 13) {
                    evt.cancelBubble = true;
                    evt.returnValue = false;
                    if (evt.stopPropagation) {
                        evt.stopPropagation();
                        evt.preventDefault();
                    }
                    bt.click();
                    return false;
                }
            }
        }

解决方法

你不需要javascript只是在另一个面板中包装搜索文本框并设置默认按钮,像这样(我剥离表标签):

<asp:Panel ID="MainPanel" runat="server" DefaultButton="btnAddUser">
    <asp:Panel ID="searchPanel" runat="server" DefaultButton="btnSearch">
      <asp:TextBox ID="txtFilter" runat="server" Width="200"></asp:TextBox>
      <asp:Button ID="btnSearch" runat="server" Text="Search" 
        CausesValidation="false" onclick="btnSearch_Click" />
    </asp:Panel>
    <asp:Button ID="btnAddUser" runat="server" Text="Add User" Width="85px" CausesValidation="False" onclick="btnAddUser_Click" />
  </asp:Panel>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读