Avatar billede d.kryger Praktikant
10. maj 2005 - 15:14 Der er 7 kommentarer og
1 løsning

Tjekke om det er et positivt heltal

Hej eksperter.

Jeg ved ikke lige om det er det rigtige kategori at sprøge i, men jeg prøver nu alligevel.

Jeg har en side hvor man kan bestille noget, og i min "<input type='text' name='antal' class='input' style='width: 25px; height: 18px; text-align:right;' value='0'>" skal man indtaste det antal man ønsker at bestille.

Her vil jeg gerne have at den tjekker om det indtastede er et positivt heltal!!! Hvordan gør jeg det?

Det må meget gerne være en "Alert"-boks hvor jeg selv kan bestemme teksten ved evt. fejl.
Avatar billede busschou Praktikant
10. maj 2005 - 17:22 #1
du kan benytte en funktion ala dette
--
function IsNumeric(sText){
var ValidChars = "0123456789";
var IsNumber = true;
var Char;
for (i = 0; i < sText.length && IsNumber == true; i++) {
  Char = sText.charAt(i);
  if (ValidChars.indexOf(Char) == -1) {
    IsNumber = false;
  }
}
if (!IsNumber){
  alert("Du har ikke indtastet et positivt tal)
}
return IsNumber
}
}
--
I din form laver du så følgende
<form onsubmit="return IsNumeric(this.form.antal.value);">
Avatar billede d.kryger Praktikant
10. maj 2005 - 18:37 #2
Hej...

Jeg har nu prøvet følgende, men uden held:
<html>

<head>
<title>Test</title>
<SCRIPT language="JavaScript">
<!--
function IsNumeric(sText){
var ValidChars = "0123456789";
var IsNumber = true;
var Char;
for (i = 0; i < sText.length && IsNumber == true; i++) {
  Char = sText.charAt(i);
  if (ValidChars.indexOf(Char) == -1) {
    IsNumber = false;
  }
}
if (!IsNumber){
  alert("Du har ikke indtastet et positivt tal)
}
return IsNumber
}
}
// -->
</SCRIPT>
</head>

<body>

<form onsubmit="return IsNumeric(this.form.antal.value);" action='tilfoej_produkt.php' method='get'>
<input type='text' name='antal' class='input' style='width: 25px; height: 18px; text-align:right;' value='0'><br>
<br>
<input border='0' width='36' height='25' type='image' name='submit' src='/grafik/indkoebsvogn.gif'>
</form>

</body>

</html>

Hvad går der galt?
Avatar billede busschou Praktikant
10. maj 2005 - 18:52 #3
sådan her i stedet :o)
---
<html>

<head>
<title>Test</title>
<SCRIPT language="JavaScript">
<!--
function IsNumeric(sText){
var ValidChars = "0123456789";
var IsNumber = true;
var Char;
for (i = 0; i < sText.length && IsNumber == true; i++) {
  Char = sText.charAt(i);
  if (ValidChars.indexOf(Char) == -1) {
    IsNumber = false;
  }
}
if (!IsNumber){
  alert("Du har ikke indtastet et positivt tal");
}
return IsNumber
}
// -->
</SCRIPT>
</head>

<body>

<form onsubmit="return IsNumeric(this.antal.value);" action='tilfoej_produkt.php' method='get'>
<input type='text' name='antal' class='input' style='width: 25px; height: 18px; text-align:right;' value='0'><br>
<br>
<input border='0' width='36' height='25' type='image' name='submit' src='/grafik/indkoebsvogn.gif'>
</form>

</body>

</html>
Avatar billede d.kryger Praktikant
10. maj 2005 - 19:32 #4
Tak, så virker det...
Kan man gøre det sådan at 0 heller ikke er gyldigt? Bare for at være besværlig ;)
Avatar billede busschou Praktikant
10. maj 2005 - 19:50 #5
Ha.. den er værre for den tester jo på om tallene er indeholdt
Dvs der må godt indeholde et 0 når blot tallet er længere end een og ikke lutter nuller
Mao må det så ikke starte med et 0
Sådan her må kunne gøre det
---
function IsNumeric(sText){
var ValidChars = "0123456789";
var IsNumber = true;
var Char;
for (i = 0; i < sText.length && IsNumber == true; i++) {
  Char = sText.charAt(i);
  if (i==0 && Char=='0'){
  alert("tallet må ikke være nul eller starte med nul"); 
  return false;
  }
  if (ValidChars.indexOf(Char) == -1) {
    IsNumber = false;
  }
}
if (!IsNumber){
  alert("Du har ikke indtastet et positivt tal");
}
return IsNumber
}
Avatar billede busschou Praktikant
10. maj 2005 - 19:51 #6
det vil afvise alle som starter med nul, altså 0 , 01, 001 , osv
Og så et svar :o)
Avatar billede roenving Novice
10. maj 2005 - 22:17 #7
-- og den kan jo klares i een linje med en regexp eller ved at prøve at parse den til et tal ...

function isInteger(num){
  return !!num.match(/^[1-9]\d*$/);
}

-- eller
function isInteger(num){
  return parseInt(num) == parseFloat(num);
}

-- den nederste vil dog acceptere tal, som begynder med nul, hvor ingen andre tal er over 7 !-)
Avatar billede d.kryger Praktikant
11. maj 2005 - 08:33 #8
Jeg har brugt dit forslag busschou. Tak for hjælpen.
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