Avatar billede heyn Nybegynder
17. februar 2008 - 12:00 Der er 7 kommentarer og
2 løsninger

Sudoku: Sikre at brugeren kun skriver tallene 1 - 9 i felterne

Hej Alle

Jeg er igang med at lave et Sudoku-spil med php og JavaScript.
Nu er problemet at der kun må skrives 1 - 9 (eller intet) i felterne, og kun 1 tegn i hvert felt. Ingen bogstaver - ikke nul.
Hvis man taster et forbudt tegn, eller prøver at taste flere skal der intet ske.
Foreløbigt har jeg lavet følgende input-statements (i en flot spilleplade)

<input id="felt_0" class="klasseid" name="name_0" type="text"  maxlength="1" size="1" value="" />
...
...
<input id="felt_80" class="klasseid" name="name_80" type="text"  maxlength="1" size="1" value="" />

Nu har jeg prøvet at lave en del kompliserede JavaScript-funktioner, men det 'kukker' konstant.

Har nogle et forslag til hvordan man løser sådan et problem?

Mvh Christian
Avatar billede w13 Novice
17. februar 2008 - 12:24 #1
Det kan du gøre sådan her:

<script type="text/javascript">
function OnlyNumbers(e){
  var charCode=e.which?e.which:event.keyCode;
  if(charCode>31&&(charCode<49||charCode>57))return false;
  return true
}
</script>

<input type="text" onkeypress="OnlyNumbers(this)">
Avatar billede heyn Nybegynder
17. februar 2008 - 12:34 #2
Hvad sker der egentlig her?

var charCode=e.which?e.which:event.keyCode;
Avatar billede w13 Novice
17. februar 2008 - 12:52 #3
Den fikser en variable der ved, hvad der blev trykket på,
Avatar billede w13 Novice
17. februar 2008 - 13:08 #4
Virker det da ikke for dig?
Avatar billede heyn Nybegynder
17. februar 2008 - 13:21 #5
Nej - I explorer skriver den også bogstaver ved indput.
I FireFox får jeg fejlen:
"Event is not defined"
for linien "var charCode=e.which?e.which:event.keyCode;"
Avatar billede heyn Nybegynder
17. februar 2008 - 13:28 #6
Skal der ikke stå

<input type="text" onkeypress="return OnlyNumbers(this)">

Selvom return ikke løser hos mig
Avatar billede w13 Novice
17. februar 2008 - 13:29 #7
Jo, men jeg finder lige ud af noget om en tyve minutters tid. Der har jeg igen adgang til min normale pc, hvor jeg har e fungerende kode.
Avatar billede w13 Novice
17. februar 2008 - 13:52 #8
Følgende er testet og fungerer:

<html>
<head></head>
<body>

<script type="text/javascript" language="javascript">
function OnlyNumbers(e){
  var charCode=e.which?e.which:event.keyCode;
  if(charCode>31&&(charCode<49||charCode>57))return false;
  return true
}
</script>

<input type="text" onkeypress="return OnlyNumbers(event)">

</body>
</html>
Avatar billede heyn Nybegynder
17. februar 2008 - 14:26 #9
Hurra - Det virker - Mange tak.
Kendte ikke den med "event".

Hilsen Christian
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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