Jeg har lavet en formular, der skal gemme noget data i en database via Ajax. Jeg har lavet en input-button, hvor jeg starter en funktion, der laver arbejdet. Det hele fungerer fint, men for at forhindre at brugeren kan trykke flere gange på knappen, og vil derfor gerne disable knappen, så snart der er trykket på den, og det kan jeg ikke rigtigt få til at fungere. Hvis jeg gør det som vist nedenfor, bliver knappen først disablet, når ajax-funktionen er kør.
function gemSkema(navn, email, afdeling) { document.getElementById('skema_button_gemskema').disabled=true;
Ja, jeg ved godt, at den bliver akviklet først, men selv handlingen er ikke synlig (i IE), før Ajax-funktionen er udført. Derfor er mit spørgsmål, og jeg kan sætte noget ind mellem linjerne, så jeg er sikker på, at handlingen er synlig i browseren, inden den går videre med næste linje.
Ja, du kan rette fejlen, der giver problemet. Et AJAX kald kan ikke fryse den slags rendering, så du må begå én eller anden fejl et sted ... AJAX er jo netop asynkron =)
Så burde gemtskemaid = ... ... slet ikke køres før den anden returnerer true (er udført). Selvom første linje p.t. alligevel burde køres først, som Ole siger.
mclemens> Hmm.. man kan vel ikke bruge IF sætningen i 20/07-2007 14:41:58 til noget, da AJAX funktionen så overhovedet ikke vil blive afviklet, hvis den ikke får disablet knappe? Eller er det bare mig der tænker forkert her..?
Alternativet er vel at bruge setTimtout til AJAX funktionen, til f.eks. 100 ms..
100 ms burde være rigeligt til at disable en knap.. :-)
Mit forslag gik netop ud på at lave ajax funktionen betinget af at knappen kunne deaktiveres - så jeg var sikker på, at ajax ikke kørte før efter knappen var disabled. Jeg kan ikke lige se en årsag til, at den ikke skulle kunne deaktiveres ... medmindre knappen ikke er på siden, men det ville jo resultere i en script fejl med den nuværende opbygning, så jeg tror ikke kaldet til gemSkema sker andre steder end hvor knappen er.
...
Har du sat id="skema_button_gemskema" på knappen ? Har ikke testet om hvorvidt name alene på knappen gør at afviklingen af disablingen sker langsommere i IE. ( IE forstår jo ikke så godt forskel på name og id, derfor ?'et om manglende id )
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.