Main tance
Main tance

Reputation: 11

ASP.NET OnTextChanged method

I have ASP.NET website, there is a page when user have to enter text in textbox and image should appear depends the text that is entered. Everything is working but image appears only when you press Enter, is there a way image to appear as you entering the letters not by pressing Enter?

<asp:TextBox ID="initials" runat="server" Width="50px" OnTextChanged="initials_TextChanged" AutoPostBack="true"></asp:TextBox> 

Code behind:

protected void initials_TextChanged(object sender, EventArgs e) 
{ 
    if(this.initials.Text == "A") { prvwleft.ImageUrl = "~/Images/left/A1.jpg"; } 
} 

Upvotes: 1

Views: 4299

Answers (2)

Shaharyar
Shaharyar

Reputation: 12459

In asp.net, OnTextChanged event fires when you leave the focus.

In your case, you should go for KeyDown event.

Asp.net Textbox doesn't have server side KeyDown event, so we will have to do it using jquery:

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.3.min.js"></script>

<script type="text/javascript" language="javascript">
    $(document).ready(function(){
        $('#initials').keypress(function () {
            if ($(this).val() == "A") {
                $('#prvwleft').ImageUrl = "~/Images/left/A1.jpg"; 
            }
            else {
                $('#prvwleft').ImageUrl = "~/Images/left/A1.jpg"; 
            }
        })
    });        
</script>

Upvotes: 1

Dah Sra
Dah Sra

Reputation: 4445

You need to call onkeypress event in javascript like this

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
    <script type="text/javascript">
    function tSpeedValue(txt)
    {  

        alert("hi");
        var at = txt.value;
        alert(at);

    }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server" onkeypress="tSpeedValue(this)"></asp:TextBox>
    </div>
    </form>
</body>
</html>

and if you want to call it in server side

 <asp:TextBox ID="TextBox2" runat="server"   onkeypress="__doPostBack(this.name,'OnKeyPress');" ></asp:TextBox>

and in .cs page the code should be like

protected void Page_Load(object sender, EventArgs e)
    {

        var ctrlName = Request.Params[Page.postEventSourceID];
        var args = Request.Params[Page.postEventArgumentID];

        if (ctrlName == TextBox2.UniqueID && args == "OnKeyPress")
        {
            TextBox2_OnKeyPress(ctrlName, args);
        }
    }



 private void TextBox2_OnKeyPress(string ctrlName, string args)
        {
            //your code goes here
        }

Upvotes: 0

Related Questions