Avatar billede martinbk Nybegynder
12. februar 2004 - 22:40 Der er 9 kommentarer og
2 løsninger

bestemme om input er en integer eller ej

hejsa, jeg har et lille problem med flg. kode (strikket sammen af stumper fundet på exp.dk og hjemmelavede stumper)

<SCRIPT LANGUAGE="JavaScript">
<!--
function isInt(num){
    if (typeof num == "number"&&num.toString().indexOf(".") == -1) return true;
      else return false;
}

function checkInput() {
  if (document.upload.title.value == "") {
    alert("please enter a title!");
    return false;
  }
  if (document.upload.resolution.value == "") {
    alert("You Have to Specify a Resolution");
    return false;
  }
  if (!isInt(document.upload.resolution.value)) {
    alert("You have to specify an Integer for the resolution!");
    return false;
  }
}

ovenstående bruges i via onsubmit="return checkInput()"

problemet ligger i valideringen af mit input felt resolution (text felt) ligemeget om jeg intaster en Int så får jeg stadig at vide jeg ikke har intastet nogen int.. håber nogen kan se fejlen..
Avatar billede skovenborg Nybegynder
12. februar 2004 - 23:31 #1
selve isInt() funtionen er der intet galt med, men problemmet opstår da dit input-felts value som standard er en string (tekst). Så du kan istedet sige:
function isInt(num){
    if (typeof num == "number"&&num.toString().indexOf(".") == -1) return true;
    else if (typeof num == "string"&& num.search(/[^0-9\.]/i) == -1 && num.indexOf(".") == -1) return true;
    else return false;
    }

Så virker den også med strenge :-)
Avatar billede skovenborg Nybegynder
12. februar 2004 - 23:42 #2
--- det er vel at mærke også muligt at få en integer ud af strenge:
parseInt(document.upload.resolution.value) - så behøver man heller ikke at teste. Dog kan brugeren samtidig godt skrive noget andet end en integer i selve formen - du har bare mulighed for at javascript "leder" efter et tal indeni formværdien.
Avatar billede martinbk Nybegynder
13. februar 2004 - 00:16 #3
det er ikke mugligt at lave et HTML input som kun sender integers ?
Avatar billede yellow Nybegynder
13. februar 2004 - 00:40 #4
>>"det er ikke mugligt at lave et HTML input som kun sender integers?"
Ikke umiddelbart.
Test på strenge giver dig også større fleksibilitet.
Her f.eks. 3 versioner af din isInt funktion:

Version1: Tillader alle hele positive tal og 0, men også "ugyldige" værdier som "007".
  function isInt( num ){
    return /^\d*$/.test( number );
  }

Version2: Tillader alle hele positive tal. Tillader ikke 0 og tillader ikke "ugyldige" strenge som "007".
  function function isInt(num){
    return /^[1-9]\d*$/.test( num );
  }

Version3: Tillader alle hele positive tal og 0. Tillader ikke ugyldige tal som "007".
  function isInt(num){
    return /^(0|([1-9]\d*))$/.test( num );
  }
Avatar billede yellow Nybegynder
13. februar 2004 - 00:43 #5
ahh ok, den første version skal være:
  return /^\d+$/.test( number );
i stedet ( den anden godtog tom streng ).
Avatar billede skovenborg Nybegynder
13. februar 2004 - 02:14 #6
du kunne vel altid bare teste om der er tastet et tal ind eller ej (løbende):
function checkInput(elm) {
      if (elm.value.charAt(elm.value.length-1).search(/[0-9]/i) != -1) return true;
      else {elm.value = elm.value.substring(0,elm.value.length-1);return false;}

}

og så put det her ind i dit input-felt:
<input type="text" onkeyup="checkInput(this);" />
Avatar billede roenving Novice
14. februar 2004 - 01:41 #7
Alternativt:

<script type="text/javascript">
function checkInput(e) {
      code = (e.which)?e.which:event.keyCode;
      if (code<58&&code>47) return true;
      else return false;
}
</script>

<input type="text" onkeypress="return checkInput(event);" />
Avatar billede martinbk Nybegynder
13. marts 2004 - 10:56 #8
undskylder den lange svar tid... men det virker skam skam :)

roenving og skovenborg smider i lige et svar ? :-)
Avatar billede roenving Novice
13. marts 2004 - 17:03 #9
Jamen så da velbekomme '-)
Avatar billede skovenborg Nybegynder
13. marts 2004 - 22:48 #10
værsgåå ;-)
Avatar billede roenving Novice
14. marts 2004 - 01:20 #11
-- og task for points ;~}
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