Avatar billede jriff Nybegynder
14. januar 2004 - 11:54 Der er 4 kommentarer og
2 løsninger

Validering af postnummer

Hej Alle!

Jeg har brug for at validere et postnummerfelt når der trykkes submit på en form. Det tal der indtastes skal være i følgende intervaller:

0900-2970
3450-3500

Altså skal man have vist en messagebox hvis ikke postnummeret er i et af de to intervaller. Hvis ikke man indtaster noget skal der komme en anden messagebox op som fortæller at feltet skal udfyldes. Det ville ligeledes være rart hvis man samtidig kunne validere de andre felter i formen for om de er udfyldt eller ej.

Det skal lige siges at jeg ikke kan kode javascript, så jeg kan kun bruge et svar hvor der er kode med :-)

På forhånd tak for hjælpen!
Avatar billede thesurfer Nybegynder
14. januar 2004 - 13:27 #1
Her er et script jeg lavede for noget tid siden.. den checker om der er noget i de ønskede felter.
Jeg har modificeret den, så den checker om det indtastede postnummer lægger mellem 0900-2970 og 3450-3500.
Hvis den ikke gør det, kommer en messagebox frem.

Foruden det, vil der komme noget tekst, der indformerer brugeren at alle felter markeret med * skal udfyldes.
Formen er bare i eksempel. Det eneste du sådan set skal gøre, er at rette formen til, og så lige rette:

// Ret navnene på de felter der *SKAL* udfyldes her:
var skal_udfyldes = new Array("fornavn", "efternavn", "adresse", "postnr");

Jeg håber at det er noget du kan bruge.

Selve scriptet:

<script text="text/JavaScript">
<!--
/*
--------------------------------------------
Script til validering af felter..
Af: theSurfer
Dato & Tid: 23/12-2003 23:41:54
Email: thesurfer underscore exp at yahoo.com
--------------------------------------------
*/

function validate(f)
{
var ok = "ja";

// Ret navnene på de felter der *SKAL* udfyldes her:
var skal_udfyldes = new Array("fornavn", "efternavn", "adresse", "postnr");

el = f.elements;
for(var i=0;i<el.length - 1;i++){
  for (var a=0; a < skal_udfyldes.length; a++) {
    if ( (el[i].name == skal_udfyldes[a]) && (el[i].value.length == 0) && (el[i].type == "text") ) {
      ok = "nej";
    }
  }
}

var postnr = f.postnr.value;
if ( (postnr < 0900) || (postnr > 3500) || ( (postnr > 2970) && (postnr < 3450) ) ) {
  alert('Postnummeret er forkert!\nDet skal være mellem 0900-2970 eller 3450-3500!');
}

if (ok == "nej") {
  document.getElementById("msg").innerHTML = " Du skal udfylde alle felter markeret med * !";
  return false;
} else {
// alt er OK!
  return true;
}

}
//-->
</script>

<form name="frminfo" action="validate.htm" method="post" onSubmit="return validate(this)">
<br>Fornavn: <input type="text" name="fornavn" value="Jens"> *
<br>Efternavn: <input type="text" name="efternavn" value="Jensen"> *
<br>Adresse: <input type="text" name="adresse" value="Jensens Vej 1"> *
<br>Website: <input type="text" name="website" value="intet website">
<br>Postnr: <input type="text" name="postnr" value="0700"> *
<br><input type="submit" value="Send Oplysninger!">
<span id="msg"></span>
</form>
Avatar billede sennels Nybegynder
14. januar 2004 - 13:32 #2
Hej
Her er et lidt primitivt script, som du kan indsætte i det html.

<html>
<head>
<script language="javascript">
function Valider()
{
   
var Altok="ja";

if (document.all.postnr.value=="")
{
alert (' Du har ikke indtastet et Postnr');
}
else
{
    if (document.all.postnr.value < 3000)
    {
        if (document.all.postnr.value < 900 || document.all.postnr.value > 2970)
        Altok="Nej"       
         
      }else
    {
    if (document.all.postnr.value < 3450  || document.all.postnr.value > 3500)
          Altok="Nej"
      }
}

if ( Altok=="Nej")
alert(' Post nummmer er ikke gyldigt ')
else
alert(' post nr ok ')

}
</script>

</head>
<body>
<table> <tr><td>
intast Postnr </td><td><input type="text" size="10" id="postnr" ></td></tr>
<tr><td><input type="button" value="OK " onclick="Valider()"></td></tr>
</table>
</body>
</html>
Avatar billede thesurfer Nybegynder
14. januar 2004 - 13:35 #3
Her er en bedre udgave af mit script.. den skriver hvilke felter det er der mangler:

<script text="text/JavaScript">
<!--
/*
--------------------------------------------
Script til validering af felter..
Af: theSurfer
Dato & Tid: 23/12-2003 23:41:54
Redigeret af theSurfer: 07/01-2004 20:15:21
Email: thesurfer underscore exp at yahoo.com
--------------------------------------------
*/

function validate(f)
{
var ok = "ja";
var mangler = "";

// Ret navnene på de felter der *SKAL* udfyldes her:
var skal_udfyldes = new Array("fornavn", "efternavn", "adresse", "postnr");

el = f.elements;
for(var i=0;i<el.length - 1;i++){
  for (var a=0; a < skal_udfyldes.length; a++) {
    if ( (el[i].name == skal_udfyldes[a]) && (el[i].value.length == 0) && (el[i].type == "text") ) {
    mangler += "- " + skal_udfyldes[a - 1] + "<br>";
      ok = "nej";
    }
  }
}

var postnr = f.postnr.value;
if ( (postnr < 0900) || (postnr > 3500) || ( (postnr > 2970) && (postnr < 3450) ) ) {
  alert('Postnummeret er forkert!\nDet skal være mellem 0900-2970 eller 3450-3500!');
  mangler += "- Postnummer<br>";
}

if (mangler != "") {
  mangler = mangler.substring(0, mangler.length - 4); // fjern det sidste "<br>", 4 = længden af "<br>"
  mangler = "Du mangler at udfylde følgende felter:<br>" + mangler;
  document.getElementById("msg").innerHTML = mangler; //" <b>Du skal svare på alle spørgsmål!</b>";
  return false;
} else {
// alt er OK!
  return true;
}

}
//-->
</script>

<form name="frminfo" action="validate.htm" method="post" onSubmit="return validate(this)">
<br>Fornavn: <input type="text" name="fornavn" value="Jens"> *
<br>Efternavn: <input type="text" name="efternavn" value="Jensen"> *
<br>Adresse: <input type="text" name="adresse" value="Jensens Vej 1"> *
<br>Website: <input type="text" name="website" value="intet website">
<br>Postnr: <input type="text" name="postnr" value="0700"> *
<br><input type="submit" value="Send Oplysninger!">
<span id="msg" style="position: absolute"></span>
</form>
Avatar billede jriff Nybegynder
14. januar 2004 - 13:53 #4
Tak for jeres hjælp! Det var meget fint, og løste mit problem :-)
Avatar billede thesurfer Nybegynder
14. januar 2004 - 13:56 #5
sennels> Jeg tror at det er en dårlig ide at bruge "document.all".
Brug hellere document.FORMNAVN.posrnr.value eller document.forms['0'].postnr.value (0 er form nummeret).

Jeg kan se at du overhovedet ikke bruger et <form>-tag.

Hvordan har du tænkt dig at submitte data uden en form?
Avatar billede thesurfer Nybegynder
14. januar 2004 - 13:57 #6
jriff> Takker 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