Processing input click in <asp: textbox

I have an asp.net text box that I want to use as a search box.

I did not plan to have a button, just letting the user enter the search keywords in the text box and press the enter key.

<div id="search-bar">
    <asp:TextBox ID="txtSearch" runat="server" ></asp:TextBox>
</div>

How can I get an "enter press" to call a method or send a page with keywords in the URL parameters, for example. search.aspx?keywords=this&that?

+3
source share
3 answers

AutoPostback true, codebehind OnTextChanged. , (f.e. Tab -key) Enter -Key .

+6

, DefaultButton DefaultButton , , , javascript, , , false.

, page, .

, . register , .

<%@ Page Language="C#" EnableEventValidation="false" %>

<script runat="server">

    protected void cmdSubmit1_Click(object sender, EventArgs e)
    {
        litValue.Text = "Value 1 - You entered: " + txtValue1.Text;
    }
    protected void cmdSubmit2_Click(object sender, EventArgs e)
    {
        litValue.Text = "Value 2 - You entered: " + txtValue2.Text;
    }

    /// <summary>
    /// This function registers what button is clicked based on whatever control currently has focus
    /// so for example if the user password field has focus then you can cause the enter button to click
    /// if the enter key is pressed This works with ie and firefox as far as I know
    /// </summary>
    /// <param name="ControlWithFocus"></param>
    /// <param name="ControlToClick"></param>
    private void RegisterDefaultButton(System.Web.UI.Control ControlWithFocus, System.Web.UI.Control ControlToClick)
    {

        PostBackOptions p = new PostBackOptions(ControlToClick);
        p.PerformValidation = true;
        if (ControlToClick is Button)
        {
            p.ValidationGroup = ((Button)ControlToClick).ValidationGroup;
        }
        else if (ControlToClick is ImageButton)
        {
            p.ValidationGroup = ((ImageButton)ControlToClick).ValidationGroup;
        }
        else if (ControlToClick is LinkButton)
        {
            p.ValidationGroup = ((LinkButton)ControlToClick).ValidationGroup;
        }

        p.RequiresJavaScriptProtocol = false;

        AttributeCollection a = null;
        if (ControlWithFocus is HtmlControl)
        {
            a = ((System.Web.UI.HtmlControls.HtmlControl)ControlWithFocus).Attributes;
        }
        else if (ControlWithFocus is WebControl)
        {
            a = ((System.Web.UI.WebControls.WebControl)ControlWithFocus).Attributes;
        }

        if (a != null)
        {
            a["onKeyDown"] = string.Format("if (event.keyCode == 13) {{{0}}}"
                  , ControlToClick.Page.ClientScript.GetPostBackEventReference(p));
        }
    }


    protected void Page_Load(object sender, EventArgs e)
    {
        RegisterDefaultButton(txtValue1, cmdSubmit1);
        RegisterDefaultButton(txtValue2, cmdSubmit2);

    }

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
    <form id="form1" runat="server">
        Enter Value 1: <asp:TextBox ID="txtValue1" runat="server"></asp:TextBox>
        <br />
        Enter Value 2: <asp:TextBox ID="txtValue2" runat="server"></asp:TextBox>
        <br />
        <asp:Literal ID="litValue" runat="server"></asp:Literal>
        <asp:LinkButton ID="cmdSubmit1" runat="server" Visible="false" OnClick="cmdSubmit1_Click">Hidden Button 1</asp:LinkButton>
        <input id="cmdSubmit2" runat="server" visible="false" type="button" value="Hidden Button 2" onserverclick="cmdSubmit2_Click" />
    </form>
</body>
</html>
+1

javascript:

document.forms["myform"].submit();

asp javascript , viewstate .., , ​​ , CSS.

0

Source: https://habr.com/ru/post/1775404/


All Articles