0

我有一个没有提交按钮的搜索框,我需要能够按回车然后执行一个方法,我该怎么做?

4

3 回答 3

4

你也可以用 CSS 做一些简单的事情:

<asp:Panel DefaultButton="myButton" runat="server">
    <asp:TextBox ID="myTextBox" runat="server" />
    <asp:Button ID="myButton" runat="server" onclick="myButton_Click" style="display: none; "  />
</asp:Panel>

该面板可能需要也可能不需要,具体取决于您的实现和周围的控件,但这对我有效并且可以回发。

于 2008-10-23T16:16:50.127 回答
2

您可以在页面中添加一个隐藏按钮,并将您的方法连接到该按钮的单击事件。然后添加一点 javascript 以在您在文本框中按 enter 时触发该按钮的回发操作。

this.myTextBox.Attributes.Add(
    "onkeydown", 
    "return keyDownHandler(13, 'javascript:" 
     + this.Page.ClientScript.GetPostBackEventReference(this.myButton, string.Empty).Replace("'", "%27") 
     + "', event);");

(您也可以用Windows.Forms.Keys .Enter替换硬编码的 13 ,如果您更喜欢更易于阅读的版本。)

其中 keyDownHandler 是这样的 JavaScript 函数:

function keyDownHandler(iKeyCode, sFunc, e) { 
    if (e == null) { 
        e = window.event; 
    } 
    if (e.keyCode == iKeyCode) { 
        eval(unescape(sFunc)); return false; 
    } 
}

请注意,这是基于DotNetNukeClientAPI Web 实用程序的实现。

于 2008-10-23T16:10:09.250 回答
0

使用 TextChanged 事件,并将 AutoPostBack 属性设置为 true。

于 2008-10-23T14:29:24.073 回答