在aspx中如何在源cs文件中定义的按钮单击事件时按下文本框上的“Enter”时触发按钮单击事件

时间:2014-01-22 06:57:00

标签: c# javascript asp.net

虽然,我想在btnSearchSuiteGroup_Click上按“输入”时触发txtSuiteGroupName事件,在aspx中描述,代码如下:

<asp:TextBox ID="txtSuiteGroupName" runat="server" clientidmode="Static" CssClass="DD" onkeypress="return searchKeyPress(event)"></asp:TextBox>
<asp:Button ID="btnSearchSuiteGroup" runat="server" Text="Search"  CssClass="DD" Width="64px" onclick="btnSearchSuiteGroup_Click" />
<script type="text/javascript">
    function searchKeyPress(e) {

        // look for window.event in case event isn't passed in
        if (typeof e == 'undefined' && window.event) { e = window.event; }
        if (e.keyCode == 13) {
            document.getElementById('<%=btnSearchSuiteGroup.ClientID%>').click();
        }
    }
</script>

虽然在源cs文件中定义了btnSearchSuiteGroup_Click

protected void btnSearchSuiteGroup_Click(object sender, EventArgs e)
{
    this.LinqDataSource1.WhereParameters["SuiteGroupName"].DefaultValue = this.txtSuiteGroupName.Text;
    this.GridView1.DataBind();
    if (GridView1.Rows.Count == 0)
        Response.Write("<script language='javascript'>window.alert('No record found!')</script>");
}

当我浏览网站时,文本框上的按键无法启动按钮点击事件,代码中有什么问题?

2 个答案:

答案 0 :(得分:9)

如果您使用Panel,则无需使用任何javascript功能。您可以为面板指定默认button ID,如下所示

    <asp:Panel runat="server" DefaultButton="btnSearchSuiteGroup">
       <asp:TextBox ID="txtSuiteGroupName" runat="server" clientidmode="Static" CssClass="DD">          
       </asp:TextBox>
        <asp:Button ID="btnSearchSuiteGroup" runat="server" Text="Search"  CssClass="DD" Width="64px" onclick="btnSearchSuiteGroup_Click" />
        </asp:Button>
    </asp:Panel>

OfCourse,您可以在单个页面上拥有多个panels,以便为单独的buttons分配不同的默认panels

了解更多Panel.DefaultButton Property

答案 1 :(得分:0)

我建议使用以下方法: 1.创建一个'ButtonClick'函数,并将'btnSearchSuiteGroup_Click'函数中的所有代码放入其中。 2.通过查看this thread为文本框'txtSuiteGroupName'添加'onkeypress'事件 3.每当触发上述事件时,查看输入的密钥是否为“Enter”。 4.如果键是“Enter”键,则调用“ButtonClick”功能。