Permalänk
Medlem

javascript validera nummer

Håller på att göra en kalkylator i html och javascript, får fan inte skiten att validera att det är nummer som anges!

<!doctype html> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" href="stil.css"> <title>kalkylator</title> <script> function checkNum(){ var n = document.kalk.disp.value; if(isNaN(n) == true){ alert("Endast siffror!"); }else{ kalk.disp.value=eval("kalk.disp.value"); } } </script> </head> <body> form name="kalk"> <input type="text" name="disp" > <br> <input type="button" value="7" OnClick="kalk.disp.value+='7'"> <input type="button" value="8" OnClick="kalk.disp.value+='8'"> <input type="button" value="9" OnClick="kalk.disp.value+='9'"> <input type="button" value="*" OnClick="kalk.disp.value+='*'"> <br> <input type="button" value="4" OnClick="kalk.disp.value+='4'"> <input type="button" value="5" OnClick="kalk.disp.value+='5'"> <input type="button" value="6" OnClick="kalk.disp.value+='6'"> <input type="button" value="-" OnClick="kalk.disp.value+='-'"> <br> <input type="button" value="1" OnClick="kalk.disp.value+='1'"> <input type="button" value="2" OnClick="kalk.disp.value+='2'"> <input type="button" value="3" OnClick="kalk.disp.value+='3'"> <input type="button" value="+" OnClick="kalk.disp.value+='+'"> <br> <input type="button" value="C" OnClick="kalk.disp.value=''"> <input type="button" value="0" OnClick="kalk.disp.value+='0'"> <input type="button" value="." OnClick="kalk.disp.value+='.'"> <input type="button" value="=" OnClick="checkNum()" > </form> </body> </html>

function svar ger själva svaret av kalkylatorn och function validate ska alltså validera att det är siffror som är angivna när man klickar på = knappen. Har provat massa olika varianter av validate men får det inte att fungera...

edit: ändrade till min nuvarande kod

Visa signatur

Citera om du vill ha svar :)

Permalänk
Medlem

Först och främst: regexp är sällan svaret.

Kan du inte använda isNan() ?

Permalänk
Medlem

Du har deklarerat metoden med två parametrar men skickar inte in några med räkna-knappen.
Var längesen jag jobbade med JavaScript så minns inte om det automatiskt kommer med några till funktionen.
med ditt regexp validerar du vara siffrorna 0-9 men inte punkten för decimaltal.

Permalänk
Medlem
Skrivet av Hubbee:

Först och främst: regexp är sällan svaret.

Kan du inte använda isNan() ?

Joo jag har provat isnan men får fan inte till det, är helt novis på js haha första scriptor jag ger mig på

Visa signatur

Citera om du vill ha svar :)

Permalänk
Medlem
Skrivet av Pake:

Du har deklarerat metoden med två parametrar men skickar inte in några med räkna-knappen.
Var längesen jag jobbade med JavaScript så minns inte om det automatiskt kommer med några till funktionen.
med ditt regexp validerar du vara siffrorna 0-9 men inte punkten för decimaltal.

Hehe okej, jag famlar lite i mörkret här har provat isnan på lite olika sätt men jag får inte till det som jag vill

Visa signatur

Citera om du vill ha svar :)

Permalänk
Medlem

Jag får tusan inte till detta med isnan! är det nån kunnig som skulle kunna förklara lite för mig hur jag kan gå tillväga?

Detta är väl det närmaste jag kommit att få det at fungera

<script> function checkNum(){ var n = document.kalk.disp.value; if(isNaN(n) == true){ alert("Your entry is not a number"); }else{ kalk.disp.value=eval(kalk.disp.value); } } </script>

Får dock bara alert oavsett vilken input jag har

det verkar vara + - * tecknen som ställer till med problem nu för mig

det går bra om jag skriver exempelvis -2 men om jag skriver 2-2 så får jag alerten

Visa signatur

Citera om du vill ha svar :)

Permalänk
Medlem
Skrivet av pellski87:

Jag får tusan inte till detta med isnan! är det nån kunnig som skulle kunna förklara lite för mig hur jag kan gå tillväga?

Detta är väl det närmaste jag kommit att få det at fungera

<script> function checkNum(){ var n = document.kalk.disp.value; if(isNaN(n) == true){ alert("Your entry is not a number"); }else{ kalk.disp.value=eval(kalk.disp.value); } } </script>

Får dock bara alert oavsett vilken input jag har

det verkar vara + - * tecknen som ställer till med problem nu för mig

det går bra om jag skriver exempelvis -2 men om jag skriver 2-2 så får jag alerten

Ja, då fungerar det ju som förväntat. Du får klura ut hur du ska hantera fallet när det inte är ett tal enligt "2-2" eller liknande.

Permalänk
Medlem
Skrivet av Hubbee:

Ja, då fungerar det ju som förväntat. Du får klura ut hur du ska hantera fallet när det inte är ett tal enligt "2-2" eller liknande.

Löste det med regexp efter många om och men haha

Visa signatur

Citera om du vill ha svar :)

Permalänk
Medlem

<script> function checkNum() { var x = document.kalk.disp.value; if (x.match(/[a-zA-Z]+/)) { kalk.disp.value=("Endast siffror!"); kalk.disp.style.background = "red"; } else { kalk.disp.value = eval(x); (eval.value===0) kalk.disp.style.background = "green"; (eval.value>=1) kalk.disp.style.background = "blue"; (eval.value<=-1) kalk.disp.style.background = "red"; } } </script>

<form name="kalk"> <input type="text" name="disp" > <br> <input type="button" value="7" OnClick="kalk.disp.value+='7'"> <input type="button" value="8" OnClick="kalk.disp.value+='8'"> <input type="button" value="9" OnClick="kalk.disp.value+='9'"> <input type="button" value="*" OnClick="kalk.disp.value+='*'"> <br> <input type="button" value="4" OnClick="kalk.disp.value+='4'"> <input type="button" value="5" OnClick="kalk.disp.value+='5'"> <input type="button" value="6" OnClick="kalk.disp.value+='6'"> <input type="button" value="-" OnClick="kalk.disp.value+='-'"> <br> <input type="button" value="1" OnClick="kalk.disp.value+='1'"> <input type="button" value="2" OnClick="kalk.disp.value+='2'"> <input type="button" value="3" OnClick="kalk.disp.value+='3'"> <input type="button" value="+" OnClick="kalk.disp.value+='+'"> <br> <input type="button" value="C" OnClick="kalk.disp.value=''"> <input type="button" value="0" OnClick="kalk.disp.value+='0'"> <input type="button" value="." OnClick="kalk.disp.value+='.'"> <input type="button" value="=" OnClick="checkNum()" > </form>

försöker få min kalkylator att ändra färg i "displayen" beroende på resultat... har prövat lite olika vägar men detta är närmaste jag kommit, blir bara röd oavsett resultat hur får jag den att separera resultaten och ge rätt bakgrund lättast?

Visa signatur

Citera om du vill ha svar :)

Permalänk
Medlem

det är förmodligen värdet i kalk.disp.value du vill kolla och inte eval.value.

Visa signatur

as far as we can tell, the massacre went well...