JavaScript til at udløse serverside OnChange event
Sprøgsmål: Hvordan udløser jeg en .NET event vha. clientside JavaScript?
Jeg vil: Få en ændring i en ASP.NET control lavet clientside med JavaScript til at udløse en "onchange" event server-side. Jeg kan ikke få følgende kode til at fungere som ønsket:
I min CodeBehind vil jeg så fange CheckedChange event'en:
... Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged Trace.Warn("Checked...!") End Sub ...
Fejlen i ovenstående eksempel er, at hvis man klikker selve checkbox'en, bliver event'en fint udløst (AutoPostback = true). Men hvis man ændrer checkbox'en vha. JavaSript, sker der ingenting - på trods af at der bliver sat flueben i checkbox'en! Det er som om, at ændringer lavet via javascript ikke gælder som userinput.
Eksemplet er en simplificeret udgave af et problem jeg sidder med, hvor jeg anvender en masse javascript til at manipulere data clientside i et tekstfelt, og som der så i sidste ende skal udløse en Change-event (en skjult checkbox ændrer status = CheckedChange event), så jeg kan få postet det hele tilbage server-side.
Well, umiddelbart vil jeg da mene, at der ikke burde være forskel på hvordan data bliver manipuleret i browseren. Hvis man kigger på source-koden som ASP.NET genererer, er det jo også en JavaScript funktion der bliver udløst, som derefter bla. laver et postback til serveren. De to teknologier kommunikerer allerede glimrende med hinanden...
Hvis man ikke ligefrem skal "hacke" sig ind i ASP.NET's måde at gøre tingene på, så må der være en måde, hvor man kan snyde browseren til at tro, at det er brugeren der har ændret i et tekstfelt, og dermed udløse event'en.
Hvis jeg bare laver et postback, fanger den formentlig ikke den rigtige event, da det ikke er det ikke er det rigtigt element der udløser event'en.
Jeg har forsøgt at kopiere den stump JavaScript, som .NET laver i det ovenstående eksempel, og så ligge det ind på JavaScript OnClick-event'en på linket. HTML-sourcen, der bliver smidt ud til browseren, kommer til at se sådan her ud:
Nu bliver der postet tilbage til serveren som der skal, men den rigtige event bliver ikke fanget.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.