---
title: "Kolla om input-fält innehåller ett numeriskt och ett postivt värde."
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/71221-kolla-om-input-fält-innehåller-ett-numeriskt-och-ett-postivt-värde"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "trexter"
published: "2003-03-16T12:50:22.000Z"
updated: "2003-03-17T15:26:57.000Z"
replies: 13
views: 349
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/71221-kolla-om-input-fält-innehåller-ett-numeriskt-och-ett-postivt-värde"
---

# Kolla om input-fält innehåller ett numeriskt och ett postivt värde.

## #1 — trexter, 2003-03-16T12:50Z

```
<script LANGUAGE="JScript"><!--

 function AbortEntry(sMsg, eSrc)
 {
  window.alert(sMsg);
  // set focus and highlight to the offending error
  eSrc.focus();
  //eSrc.select();
 }

 function HandleError(eSrc)
 {
  // make sure the input is a numeric value
  var val = parseInt(eSrc.value);
  if (isNaN(val))
  {
   return AbortEntry("Must be a number.", eSrc);
  }

  // make sure the value is not negative
  if (val <= 0) 
  {
   return AbortEntry("Please type a positive number", eSrc);
  }
 }

//-->
</script>
```

```
<input type="text" size="1" name="intQuantity" value="1" onChange="HandleError(this)"> st
```

Så här ser min kod ut. Om man sätter värdet till t.ex. -2 och 
sedan klickar submit så får jag upp en alert-ruta... precis som jag 
vill ha det. Men om jag sedan klickar på submit-rutan igen så 
händer ingenting... inte alls som jag vill ha det. ;)

Hur ska jag fixa detta?

 :)

Permalänk: https://www.webforum.nu/p/71221

## #2 — Peter S, 2003-03-16T13:18Z

Du kanske skulle kunna göra så här:

```
<head>
<script type="text/javascript">
<!--

function HandleError( o ){
	var elm = o.elements[ "intQuantity" ];

	if( isNaN( parseInt( elm.value ) ) ){
		alert( "Must be a number." );
		elm.focus();
		return false;
	}
	else if( parseInt( elm.value ) <= 0 ){
		alert( "Please type a number greater than zero." );
		elm.focus();
		return false;
	}
};

//-->
</script>
</head>

<form onsubmit="return HandleError(this)">

<input type="text" size="1" name="intQuantity" value="1">

<input type="submit">

</form>
```

 :)

Permalänk: https://www.webforum.nu/p/981698

## #3 — trexter, 2003-03-16T13:26Z

thx :)

Permalänk: https://www.webforum.nu/p/981701

## #4 — trexter, 2003-03-16T13:42Z

Jag skulle vilja använda detta scriptet på ett annat formulär också men det fungerar inte riktigt.

I det forumläret finns det flera (ett obestämt antal) fält som alla heter "intQuantity".

Jag vill inte att Något av fälten ska få innehålla otillåtna värden.

Nu får jag en alert-ruta om jag skriver in felaktiga värden och sedan postas forumläret. Scriptet kollar alltså bra ett av fälten.

Kan man på något sätt loopa genom alla fält med namnet "intQuantity" och kolla samtliga värden?

 :)

Permalänk: https://www.webforum.nu/p/981712

## #5 — Peter S, 2003-03-16T13:49Z

Självklart:

```
...
<script type="text/javascript">
<!--

function HandleError( o ){
	var elm = o.elements[ "intQuantity" ];

	for( var i=0; i < elm.length; i++ ){
		if( isNaN( parseInt( elm[ i ].value ) ) ){
			alert( "Must be a number." );
			elm[ i ].focus();
			return false;
		}
		else if( parseInt( elm[ i ].value ) <= 0 ){
			alert( "Please type a number greater than zero." );
			elm[ i ].focus();
			return false;
		}
	}
};

//-->
</script>
...
```

 :)

Permalänk: https://www.webforum.nu/p/981714

## #6 — trexter, 2003-03-16T13:56Z

Exakt som jag ville ha det!
Tack så väldeligans!
 
 :birp :bire

Permalänk: https://www.webforum.nu/p/981720

## #7 — Peter S, 2003-03-16T14:04Z

:bire

Permalänk: https://www.webforum.nu/p/981729

## #8 — trexter, 2003-03-16T15:45Z

Hmm... en sak bara. Om jag skriver "a32" så säger in scriptet ifrån.

 :)

Permalänk: https://www.webforum.nu/p/981781

## #9 — dectgap, 2003-03-16T16:16Z

Det är för att du i kontrollen (enligt scriptet som Peter skrev) kör parseInt() på värdet, och då kommer värdet "a32" att ge "32", som helt riktigt är ett tal.

Testa att ändra följande rad

```
if( isNaN( parseInt( elm[ i ].value ) ) ){
```

till

```
if( isNaN( elm[ i ].value ) ){
```

Permalänk: https://www.webforum.nu/p/981821

## #10 — trexter, 2003-03-16T16:43Z

fel: i är odefinierad.

 :)

Permalänk: https://www.webforum.nu/p/981837

## #11 — Peter S, 2003-03-16T17:45Z

parseInt( "a32" ) kommer *inte* att ge värdet 32, utan NaN, så skriptet skall fungera ( om du använder fler än **ett** "input"-element med namnet "intQuantity" d.v.s. Annars får du använda den första versionen jag postade ).

Fast å andra sidan är *parseInt()* onödig att ha med, så du kan gott och väl använda använda dectgaps förslag.

 :)

Permalänk: https://www.webforum.nu/p/981871

## #12 — dectgap, 2003-03-16T23:09Z

Sorry, jag hade visst lite fel.
Dock ger parseInt('32a') svaret 32, som alltså är ett tal, och om jag har förstått det hela rätt ska man bara få skriva tal i rutan.

Har du fortfarande problem att få det hela att fungera, trexter? Tänk på att du **måste** ha flera fält som heter "intQuantity", annars kommer scriptet inte att fungera.

Permalänk: https://www.webforum.nu/p/982061

## #13 — trexter, 2003-03-17T15:01Z

Hmm... nu fungerar inte någonting längre. Kan jag få koden för:
a) Kolla igenom Flera fält och Inte tillåta "4m".
b) Kolla igenom Ett fält och Inte tillåta "4m".

 :)

Permalänk: https://www.webforum.nu/p/982449

## #14 — Peter S, 2003-03-17T15:26Z

Detta fungerar oavsett antalet fält:

```
function HandleError( o ){
	var elm = o.elements[ "intQuantity" ];

	if( typeof( elm.length ) == "number" ){
		for( var i=0; i < elm.length; i++ ){
			if( isNaN( elm[ i ].value ) ){
				alert( "Must be a number." );
				elm[ i ].focus();
				return false;
			}
			else if( parseInt( elm[ i ].value ) <= 0 ){
				alert( "Please type a positive number greater than zero." );
				elm[ i ].focus();
				return false;
			}
		}
	} else {
		if( isNaN( elm.value ) ){
			alert( "Must be a number." );
			elm.focus();
			return false;
		}
		else if( parseInt( elm.value ) <= 0 ){
			alert( "Please type a number greater than zero." );
			elm.focus();
			return false;			
		}
	}
};

//-->
</script>
```

 :)

Permalänk: https://www.webforum.nu/p/982469

---

Tråden på webben: https://www.webforum.nu/amne/javascript/71221-kolla-om-input-fält-innehåller-ett-numeriskt-och-ett-postivt-värde
