Just nu i M3-nätverket
Jump to content

TextChanged Event utan att lämna kontrollen?


HeavyMental

Recommended Posts

Hej

 

Finns det nåt smart sätt att få TextChanged i en textbox att köras direkt när man skriver in något i den?

Som det är nu funkar det bara när jag skrivit nåt och klickar utanför rutan eller trycker enter.

 

Autopostback är såklart true :)

 

/HeavyMental

 

Link to comment
Share on other sites

Finns det nåt smart sätt att få TextChanged i en textbox att köras direkt när man skriver in något i den?

Du bör verkligen förstå skillnaden mellan postbacks och klientscript om du skall jobba med net. Eftersom detta tydligen är helt främmande föreslår jag lite vidare pluggande.

Posta frågan i javascript eller dhtml-forumet istället, eftersom det är där det hör hemma.

 

Klient-eventet du leter efter f.ö keyup (eller keydown, beroende på vad du vill göra)

 

Autopostback i dina formulär bör du undvika, det är inte snyggt. Använd ajax, ingen vill se omladdande sidor för enkla operationer längre.

 

Link to comment
Share on other sites

Jag vet inte Cluster, för jag vet inte riktigt vad som försöker uppnås. HeavyMental kanske verkligen vill trigga en postback för varje tangenttryck, men då är som sagt ajax naturligtvis att föredra. Låt tråden ligga kvar i ASP.Net så länge.

 

Link to comment
Share on other sites

 

 

Ja det gick kanske lite fort, gör ett nytt försök :)

 

Försöker mig på AJAX (i Visual Studio) och gjorde en testsida bara för att se hur det fungerar.

 

En enkel sida, den innehåller en scriptManager (för att jag läste att det behövs) , en Updatepanel som innehåller en TextBox och en Label.

I koden för TextBoxen står det såhär:

 

Protected Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
       Label1.Text = TextBox1.Text
End Sub

 

Detta tänkte jag skulle resultera i att texten i etiketten ändras så fort jag skriver något i textboxen, men det jag får är att så länge jag skriver händer inget, men när jag klickar utanför rutan eller trycker enter så ändras texten i etiketten.

 

Så tydligen fungerar inte TextChanged som jag trodde, och det jag undrar är om jag missat nån egenskap eller inställning man kan göra för att få det att fungera. Men det verkar vara precis som du säger, det går åt Javascript för att få det som jag vill så jag får spåna på det istället.

 

/HeavyMental

 

 

Link to comment
Share on other sites

Jo, det scenariet är en given javascript-lösning. Eftersom du använder ASP.Net-kontroller så måste du dock föra över de dynamiskt skapade klientId:na till Javascriptet.

 

I din code-behind för du över värdena, samt lägger till ett onkeyup-event med följande:

	
protected string LabelClientId;
protected string TextboxClientId;

protected void Page_Load(object sender, EventArgs e)
{
LabelClientId = Label1.ClientID;
TextboxClientId = Textbox1.ClientID;
Textbox1.Attributes.Add("onkeyup", "UpdateLabel();");
}

 

På aspx-sidan lägger du in följande

<head runat="server">
   <title>Untitled Page</title>
   <script>
       var LabelId='<%=LabelClientId %>';
       var TextboxId='<%=TextboxClientId %>';
       function UpdateLabel() 
       {
           document.getElementById(LabelId).innerHTML=document.getElementById(TextboxId).value;
       }

   </script>
</head>

 

(Kontrollerna heter alltså Label1 och Textbox1)

 

 

[inlägget ändrat 2008-09-05 08:16:00 av Anjuna Moon]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...