Avatar billede nannami Nybegynder
27. marts 2007 - 23:28 Der 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
  } 

Hvad gør jeg hvis den ender i else?
Avatar billede kalp Novice
27. marts 2007 - 23:30 #1
else
  return
Avatar billede nannami Nybegynder
28. marts 2007 - 01:59 #2
Det hjælper ikke rigtig, den sender det afsted alligevel..
Avatar billede crazysnap Seniormester
28. marts 2007 - 09:23 #3
Hej nannami,


I din else returnerer du false, altså:

function question()
{
  answer = "2007";
  question = prompt("Hvilket årstal har vi?",'');

  if (question==answer)
    alert('Svar korrekt! Klik OK for at udføre!');
  else 
    return false;



Og når du tilføjer en metode til din onclick event tilføjer du et return, altså:


BtnSend.Attributes.Add("onclick", "return question();");


Det burde gøre tricket! :)


Mvh.

- Snap
Avatar billede nannami Nybegynder
28. marts 2007 - 11:18 #4
Hejsa crazysnap.

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..
Avatar billede crazysnap Seniormester
28. marts 2007 - 12:22 #5
Hej nannami,


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;
        }
       
        alert('Svaret er forkert!');
        return false;
  } 


Håber det virker nu! :)


Mvh.

- Snap
Avatar billede nannami Nybegynder
28. marts 2007 - 13:12 #6
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?
Avatar billede crazysnap Seniormester
28. marts 2007 - 15:09 #7
Hej nannami,


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! :)



Mvh.

- Snap
Avatar billede nannami Nybegynder
28. marts 2007 - 15:33 #8
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?
Avatar billede crazysnap Seniormester
28. marts 2007 - 15:51 #9
Hej igen,


1) det er toLowerCase()    (med stort c)  :)

2) Du skal også gøre det på 'answer' variablen, plus at der lige skal en 'var' foran 'answer' variablen (havde jeg overset).


Så samlet kan det se sådan ud:


function question()
    {
        var answer = "Hej Med Dig";
        var question = prompt("Skriv hej med dig?",'');

        if (question.toLowerCase() == answer.toLowerCase())
        {
            alert('Svar korrekt! Klik OK for at udføre!');
            return true;
        }
       
        alert('Svaret er forkert!');
        return false;
  } 


Mvh.

- Snap :)
Avatar billede nannami Nybegynder
28. marts 2007 - 16:04 #10
Ah.. det c skulle være med stort, det er ikke altid til med det case sensivity :-)

Nu virker det jo fint som det skal! Tak for hjælpen!
Avatar billede crazysnap Seniormester
28. marts 2007 - 16:06 #11
Det var så lidt! :)


Tak for pointene og held og lykke med det!


Mvh.

- Snap :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester