Just nu i M3-nätverket
Gå till innehåll

TextChanged Event utan att lämna kontrollen?


HeavyMental

Rekommendera Poster

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

 

Länk till kommentar
Dela på andra webbplatser

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.

 

Länk till kommentar
Dela på andra webbplatser

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.

 

Länk till kommentar
Dela på andra webbplatser

 

 

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

 

 

Länk till kommentar
Dela på andra webbplatser

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]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...