27. marts 2007 - 23:28Der er
10 kommentarer og 1 løsning
Validere button med en prompt
Hej.
Jeg vil validere, så når der trykkes på en button, kommer der en JS-prompt, som stiller et spørgsmål. Hvis der svares rigtigt udføres det event som er tilknyttet button, hvis ikke udføres det ikke. Så jeg siger:
Først tilknytter jeg en function i min page_load:
BtnSend.Attributes.Add("onclick", "question()")
Og add'er en function til min side i JS:
function question() { answer = "2007"; question = prompt("Hvilket årstal har vi?",'');
if (question==answer) alert('Svar korrekt! Klik OK for at udføre!'); else // gør noget så der ikke eksikveres mere }
Det ser næsten ud til at virke. Man trykker på knappen, svarer forkert og der sker ikke nogget. Men trykker man på knappen igen derefter, udføres eventet uden spørgsmål..
Ja, det har du jo fuldstændig ret i og grunden er sådan set meget simpel. Din variabel 'qeustion' er ikke erklæret, dvs du mangler 'var' foran. Så sammenlagt og for at få det til at virke skal du ændre:
question = prompt("Hvilket årstal har vi?",'');
til:
var question = prompt("Hvilket årstal har vi?",'');
For nemhedsskyld har jeg lige pastet den revideret javascript metode ind: :)
function question() { answer = "2007"; var question = prompt("Hvilket årstal har vi?",'');
if (question==answer) { alert('Svar korrekt! Klik OK for at udføre!'); return true; }
Ja nu virker det! :-) Er det noget med at variablen bliver "re-erklæret" hver gang der bliver kørt eller hvordan? Jeg kan også se at du i det reviderede har lavet lidt om på konstruktionen og fjernet else?
Grunden til det ikke virkede før var fordi det faktisk ikke var valid javascript da man assigner til en variabel der ikke er blevet erklæret (gøres med 'var'). Og helt galt var det i dette tilfælde da 'question' også har samme navn som selv metoden, det betyder at den faktisk prøvede at assigne prompt-svaret til metoden, hvilket jo overhovedet ikke giver mening. :)
Ja jeg flyttede lige lidt rundt på koden, ikke noget du behøver at addaptere overhovedet (du kan bare tilføje 'var' før question variablen), men synes bare det gjorde scriptet lidt mere overskueligt samt tydeliggjorde at der skal returneres 'true' når svaret er korrekt! :)
Okay - fin forklaring! Så er jeg med. :-) Jeg vil gerne smide en .toLowercase() på et sted, så der ikke tages højde for hvordan et svar indtastes (hvis vi siger svaret er et ord frem for 2007)
Hvor kan jeg sætte det på`?
Jeg får det ikke til at virke med:
var question = prompt("Hvilket årstal har vi?",''); question = question.toLowercase();
Det er måske igen fordi question har samme navn som selve metoden?
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.