Avatar billede discotk Nybegynder
08. december 2009 - 00:42 Der er 13 kommentarer og
1 løsning

CPR alert

Jeg kan ikke få mit CPR script til at lade være med at lave alert. (hele scriptet nederst)


Tror at den er gal her (dette er udsnit fra koden længere nede):

if(chk%11==0&&dato.getFullYear()==aar&&dato.getMonth()==maaned&&dato.getDate()==dag);
  }
  theErrors += "*Ugyldigt CPR nr.\n";


For når jeg laver koden sådan her, så virker det men så springer den bare de andre valideringer over:

if(chk%11==0&&dato.getFullYear()==aar&&dato.getMonth()==maaned&&dato.getDate()==dag)return true;
  }
  theErrors += "*Ugyldigt CPR nr.\n";



-----------------SCRIPT----------------------


function val(form)

{

  var theErrors = '';

if (form.fornavn.value == "")

      theErrors += "*Fornavn\n";       
           
var cpr = form.cpr1.value + form.cpr2.value;
  if(cpr.match(/\d{6}\-?\d{4}/)){
    var aar = +cpr.substr(4,2)+2000;
    aar -= (aar>new Date().getFullYear())?100:0;
    var maaned = +cpr.substr(2,2)-1;
    var dag = +cpr.substr(0,2);
    var dato = new Date(aar,maaned,dag);
    cpr = cpr.replace(/\-/g,"");
    var chk = 0;
    for(i=9;i>-1;i--){
      chk += (+cpr.charAt(i))*((i>2)?(10-i):(4-i));
    }
    if(chk%11==0&&dato.getFullYear()==aar&&dato.getMonth()==maaned&&dato.getDate()==dag);
  }
  theErrors += "*Ugyldigt CPR nr.\n";
 
if(theErrors)

  {

    alert(theErrors);
    return false;

  }

  else

      return true;

}
Avatar billede Slettet bruger
08. december 2009 - 00:52 #1
if(chk%11==0&&dato.getFullYear()==aar&&dato.getMonth()==maaned&&dato.getDate()==dag)return true;
Et return statment afbryder udførelsen af et if statement eller en funktion. Derfor er den eneste løsning at fjerne kaldet til alert funktionen nederst nede:

function val(form)
{
  var theErrors = '';
if (form.fornavn.value == "")
      theErrors += "*Fornavn\n";     
var cpr = form.cpr1.value + form.cpr2.value;
  if(cpr.match(/\d{6}\-?\d{4}/)){
    var aar = +cpr.substr(4,2)+2000;
    aar -= (aar>new Date().getFullYear())?100:0;
    var maaned = +cpr.substr(2,2)-1;
    var dag = +cpr.substr(0,2);
    var dato = new Date(aar,maaned,dag);
    cpr = cpr.replace(/\-/g,"");
    var chk = 0;
    for(i=9;i>-1;i--){
      chk += (+cpr.charAt(i))*((i>2)?(10-i):(4-i));
    }
    if(chk%11==0&&dato.getFullYear()==aar&&dato.getMonth()==maaned&&dato.getDate()==dag);
  }
theErrors += "*Ugyldigt CPR nr.\n";
if(theErrors) {
    return false;
} else {
  return true;
}
Avatar billede Slettet bruger
08. december 2009 - 00:53 #2
Ups, glemte en sidste tuborgklamme. Den må du lige selv sætte på.
Avatar billede discotk Nybegynder
08. december 2009 - 10:10 #3
hvis jeg sætter en sidste tuborgklamme på, så kommer der ingen fejl, men jeg kan ikke komme videre. Hvis jeg derimod ikke sætter en sidste tuborgklamme, så får jeg fejl... evt. nogle bud?
Avatar billede Slettet bruger
08. december 2009 - 16:23 #4
"hvis jeg sætter en sidste tuborgklamme på, så kommer der ingen fejl, men jeg kan ikke komme videre."


Hvordan kan du ikke komme videre? Hvis du prøver at forklare det lidt mere grundigt vil jeg med glæde kigge på det.
Avatar billede discotk Nybegynder
08. december 2009 - 16:56 #5
I min form, når jeg trykker på min submit knap...

Min kode ser nu således ud:


<script type="text/javascript">   

function val(form)

{

  var theErrors = '';

  if (form.kursusnavn.value == "")

      theErrors += "*Navn på uddannelse/kursus\n";

  if (form.fornavn.value == "")

      theErrors += "*Fornavn\n";

  if (form.efternavn.value == "")

      theErrors += "*Efternavn\n";

  if (form.cpr1.value == "")

      theErrors += "*Fødselsdagsdato\n";

  if (form.cpr2.value == "")

      theErrors += "*Kontrolcifre\n";

  if (form.adresse.value == "")

      theErrors += "*Adresse\n";

  if (form.postnummer.value == "")

      theErrors += "*Telefon\n";

  if (form.by.value == "")

      theErrors += "*Antal\n";

  if (form.tlf.value == "")

      theErrors += "*Telefon nr.\n";
     
  var regexp = /^\w[\w\.\-]*@\w[\w\-]*\.\w{2}/i;
  if (form.email.value!=''&&!form.email.value.match(regexp))

      theErrors += "*Ugyldig e-mail\n";

if (form.email.value == "")

      theErrors += "*E-mail\n";
     
if (form.email2.value == "")

      theErrors += "*Bekræft e-mail\n";

if (form.email2.value != form.email.value)

      theErrors += "*E-mails passer ikke sammen\n";
      else if (form.email.value != form.email2.value)
            theErrors += "*E-mails passer ikke sammen\n";
           
            var cpr = form.cpr1.value + form.cpr2.value;
  if(cpr.match(/\d{6}\-?\d{4}/)){
    var aar = +cpr.substr(4,2)+2000;
    aar -= (aar>new Date().getFullYear())?100:0;
    var maaned = +cpr.substr(2,2)-1;
    var dag = +cpr.substr(0,2);
    var dato = new Date(aar,maaned,dag);
    cpr = cpr.replace(/\-/g,"");
    var chk = 0;
    for(i=9;i>-1;i--){
      chk += (+cpr.charAt(i))*((i>2)?(10-i):(4-i));
    }
    if(chk%11==0&&dato.getFullYear()==aar&&dato.getMonth()==maaned&&dato.getDate()==dag)return true;
  }
  theErrors += "*Ugyldigt CPR nr.\n";
if(theErrors){
    alert(theErrors);
    return false;
  }    else {
      return true; }
}   

</script>


Den virker fint nu, bort set fra at hvis jeg indtaster et cpr nummer springer den alert over på de andre felter der ikke er udfyldt - hvilket er lidt dumt... For at fjerne dette bliver jeg nødt til at fjerne "return true" og implementere det i min return true i bunden. Men ved ikke hvordan...

Har bare lavet et script og prøver nu bare at implementere dette cpr script i mit: http://www.eksperten.dk/spm/771761
Avatar billede Slettet bruger
08. december 2009 - 17:34 #6
Nu har jeg rettet scriptet til så det ikke afsender formularen bare fordi CPR-nummeret er gyldigt:

<script type="text/javascript"> 
function val(form)
{
  var theErrors = '';
  if (form.kursusnavn.value == "")
      theErrors += "*Navn på uddannelse/kursus\n";
  if (form.fornavn.value == "")
      theErrors += "*Fornavn\n";
  if (form.efternavn.value == "")
      theErrors += "*Efternavn\n";
  if (form.cpr1.value == "")
      theErrors += "*Fødselsdagsdato\n";
  if (form.cpr2.value == "")
      theErrors += "*Kontrolcifre\n";
  if (form.adresse.value == "")
      theErrors += "*Adresse\n";
  if (form.postnummer.value == "")
      theErrors += "*Telefon\n";
  if (form.by.value == "")
      theErrors += "*Antal\n";
  if (form.tlf.value == "")
      theErrors += "*Telefon nr.\n";
   
  var regexp = /^\w[\w\.\-]*@\w[\w\-]*\.\w{2}/i;
  if (form.email.value!=''&&!form.email.value.match(regexp))
      theErrors += "*Ugyldig e-mail\n";
if (form.email.value == "")
      theErrors += "*E-mail\n";
   
if (form.email2.value == "")
      theErrors += "*Bekræft e-mail\n";
if (form.email2.value != form.email.value)
      theErrors += "*E-mails passer ikke sammen\n";
      else if (form.email.value != form.email2.value)
            theErrors += "*E-mails passer ikke sammen\n";
         
            var cpr = form.cpr1.value + form.cpr2.value;
  if(cpr.match(/\d{6}\-?\d{4}/)){
    var aar = +cpr.substr(4,2)+2000;
    aar -= (aar>new Date().getFullYear())?100:0;
    var maaned = +cpr.substr(2,2)-1;
    var dag = +cpr.substr(0,2);
    var dato = new Date(aar,maaned,dag);
    cpr = cpr.replace(/\-/g,"");
    var chk = 0;
    for(i=9;i>-1;i--){
      chk += (+cpr.charAt(i))*((i>2)?(10-i):(4-i));
    }
    if(chk%11!=0||dato.getFullYear()!=aar||dato.getMonth()!=maaned||dato.getDate()!=dag)
      theErrors += "*Ugyldigt CPR nr.\n";;
    }
if(theErrors){
    alert(theErrors);
    return false;
  } else {
    return true; }
}
</script>


Håber det virker :)
Avatar billede discotk Nybegynder
08. december 2009 - 19:26 #7
nårh ja for hel****, manglede sgu da bare at lave den til en negativ streng. når men det virker mycket bra ;) så smid et svar
Avatar billede discotk Nybegynder
08. december 2009 - 19:43 #8
hov nej vent nu lidt.... nu kan jeg bare skrive f.eks 5 i den ene boks og 3 i den anden så godkender den det alligevel :S så er det jo ikke et gyldigt cpr nummer :S
Avatar billede discotk Nybegynder
08. december 2009 - 19:45 #9
kan man ikke lave en funktion hvor at den siger at det ikke er gyldigt hvis der ikke er 6 i den ene boks og 4 i den anden?
Avatar billede Slettet bruger
08. december 2009 - 23:47 #10
Jo, det kan man da godt:

var cpr = form.cpr1.value + form.cpr2.value;[div]

bliver til:

[div]if (form.cpr1.value.lenght == 6 && form.cpr2.value.lenght == 4) {
var cpr = form.cpr1.value + form.cpr2.value;
(...)
Avatar billede Slettet bruger
08. december 2009 - 23:47 #11
Ups, mente sæ'fø'li':

var cpr = form.cpr1.value + form.cpr2.value;


bliver til:

if (form.cpr1.value.lenght == 6 && form.cpr2.value.lenght == 4) {
var cpr = form.cpr1.value + form.cpr2.value;
(...)
Avatar billede discotk Nybegynder
09. december 2009 - 11:51 #12
har fundet ud af det :) men smid et svar du fortjener sgu de point der :)
Avatar billede Slettet bruger
09. december 2009 - 13:46 #13
Det er jeg glad for :)

Må jeg, og fremtidige personer der støder ind i samme problem, så ikke se løsningen?
Avatar billede discotk Nybegynder
11. december 2009 - 19:15 #14
Jo selvfølgelig, værsgo her er løsningen!

<script type="text/javascript"> 
function val(form)
{
    var theErrors = '';
if (form.kursusnavn.value == "")
      theErrors += "*Navn på uddannelse/kursus\n";
if (form.fornavn.value == "")
      theErrors += "*Fornavn\n";
if (form.efternavn.value == "")
      theErrors += "*Efternavn\n";
if (form.cpr1.value == "")
      theErrors += "*Fødselsdagsdato\n";
if (form.cpr2.value == "")
      theErrors += "*Kontrolcifre\n";
if (form.adresse.value == "")
      theErrors += "*Adresse\n";
if (form.postnummer.value == "")
      theErrors += "*Postnummer\n";
        else if(!form.postnummer.value.match(/^[0-9\+ ]+$/)&&form.postnummer.value!='')
      theErrors += "*Ugyldigt postnummer\n";
if (form.by.value == "")
      theErrors += "*By\n";
if (form.tlf.value == "")
      theErrors += "*Telefon nr.\n";
        else if(!form.tlf.value.match(/^[0-9\+ ]+$/)&&form.tlf.value!='')
      theErrors += "*Ugyldigt telefon nr.\n";
    var regexp = /^\w[\w\.\-]*@\w[\w\-]*\.\w{2}/i;
if (form.email.value!=''&&!form.email.value.match(regexp))
      theErrors += "*Ugyldig e-mail\n";
if (form.email.value == "")
      theErrors += "*E-mail\n";
if (form.email2.value == "")
      theErrors += "*Bekræft e-mail\n";
if (form.email2.value != form.email.value)
      theErrors += "*E-mails passer ikke sammen\n";
        else if (form.email.value != form.email2.value)
            theErrors += "*E-mails passer ikke sammen\n";
if (form.cpr1.value.length!=6)
      theErrors += "*Ugyldigt CPR nr.\n";
        else if (form.cpr2.value.length!=4)
            theErrors += "*Ugyldigt CPR nr.\n";
    var cpr = form.cpr1.value + form.cpr2.value;
if(cpr.match(/\d{6}\-?\d{4}/)){
    var aar = +cpr.substr(4,2)+2000;
    aar -= (aar>new Date().getFullYear())?100:0;
    var maaned = +cpr.substr(2,2)-1;
    var dag = +cpr.substr(0,2);
    var dato = new Date(aar,maaned,dag);
    cpr = cpr.replace(/\-/g,"");
    var chk = 0;
    for(i=9;i>-1;i--){
      chk += (+cpr.charAt(i))*((i>2)?(10-i):(4-i));
    }
    if(chk%11!=0||dato.getFullYear()!=aar||dato.getMonth()!=maaned||dato.getDate()!=dag)
      theErrors += "*Ugyldigt CPR nr.\n";;
    }
if(theErrors){
    alert(theErrors);
    return false;
  } else {
    return true; }
}
</script>
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