Avatar billede Slettet bruger
27. april 2002 - 15:27 Der er 33 kommentarer og
1 løsning

validering

hvordan skal jeg gøre for at få min validering til at tjekke om to input felter har den samme værdi ?

mvh.
questis.dk
Avatar billede jakoba Nybegynder
27. april 2002 - 15:31 #1
Hvordan ser den validering du indtil videre har ud?
Avatar billede Slettet bruger
27. april 2002 - 15:35 #2
den er virklig lang.... da jeg laver en lidt vild e-mail validering... men her er den da:

<script>
function emailCheck (emailStr) {

/* The following variable tells the rest of the function whether or not
to verify that the address ends in a two-letter country or well-known
TLD.  1 means check it, 0 means don't. */

var checkTLD=1;

/* The following is the list of known TLDs that an e-mail address must end with. */

var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;

/* The following pattern is used to check if the entered e-mail address
fits the user@domain format.  It also is used to separate the username
from the domain. */

var emailPat=/^(.+)@(.+)$/;

/* The following string represents the pattern for matching all special
characters.  We don't want to allow special characters in the address.
These characters include ( ) < > @ , ; : \ " . [ ] */

var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

/* The following string represents the range of characters allowed in a
username or domainname.  It really states which chars aren't allowed.*/

var validChars="\[^\\s" + specialChars + "\]";

/* The following pattern applies if the "user" is a quoted string (in
which case, there are no rules about which characters are allowed
and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
is a legal e-mail address. */

var quotedUser="(\"[^\"]*\")";

/* The following pattern applies for domains that are IP addresses,
rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
e-mail address. NOTE: The square brackets are required. */

var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

/* The following string represents an atom (basically a series of non-special characters.) */

var atom=validChars + '+';

/* The following string represents one word in the typical username.
For example, in john.doe@somewhere.com, john and doe are words.
Basically, a word is either an atom or quoted string. */

var word="(" + atom + "|" + quotedUser + ")";

// The following pattern describes the structure of the user

var userPat=new RegExp("^" + word + "(\\." + word + ")*$");

/* The following pattern describes the structure of a normal symbolic
domain, as opposed to ipDomainPat, shown above. */

var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

/* Finally, let's start trying to figure out if the supplied address is valid. */

/* Begin with the coarse pattern to simply break up user@domain into
different pieces that are easy to analyze. */

var matchArray=emailStr.match(emailPat);

if (matchArray==null) {

/* Too many/few @'s or something; basically, this address doesn't
even fit the general mould of a valid e-mail address. */

alert("Email adressen ser ugyldig ud (tjeck for  @ og .'s)");
return false;
}
var user=matchArray[1];
var domain=matchArray[2];

// Start by checking that only basic ASCII characters are in the strings (0-127).

for (i=0; i<user.length; i++) {
if (user.charCodeAt(i)>127) {
alert("Dette domæne navn indeholder ugyldige tegn.");
return false;
  }
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i)>127) {
alert("Dette domæne navn indeholder ugyldige tegn.");
return false;
  }
}

// See if "user" is valid

if (user.match(userPat)==null) {

// user is not valid

alert("Brugernavnet er ikke gyldigt.");
return false;
}

/* if the e-mail address is at an IP address (as opposed to a symbolic
host name) make sure the IP address is valid. */

var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {

// this is an IP address

for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
alert("Destinations IP adressen er ikke gyldig! ");
return false;
  }
}
return true;
}

// Domain is symbolic name.  Check if it's valid.

var atomPat=new RegExp("^" + atom + "$");
var domArr=domain.split(".");
var len=domArr.length;
for (i=0;i<len;i++) {
if (domArr[i].search(atomPat)==-1) {
alert("Domænenavnet er ikke korrekt.");
return false;
  }
}

/* domain name seems valid, but now make sure that it ends in a
known top-level domain (like com, edu, gov) or a two-letter word,
representing country (uk, nl), and that there's a hostname preceding
the domain or country. */

if (checkTLD && domArr[domArr.length-1].length!=2 &&
domArr[domArr.length-1].search(knownDomsPat)==-1) {
alert("Adressen skal ende på en korrekt domain eller to bogstaver + land.");
return false;
}

// Make sure there's a host name preceding the domain.

if (len<2) {
alert("Denne adresse mangler et host navn!");
return false;
}

// If we've gotten this far, everything's valid!
return true;
}

function val(f) {
if (f.navn.value.length < 1) {
alert("du har glemt at indtaste dit navn");
return false;
}
if (!emailCheck(f.email.value)) return false;

return true;
}
</script>
Avatar billede limemedia Nybegynder
27. april 2002 - 15:40 #3
en bi-ting : den emailting du har, måske den her er lidt mere simpel
<script language="JavaScript1.2" type="text/javascript">
<!--
    function email_verify(str) {
        if(!str.match(/^[\w]{1}[\w\.\-_]?@[\w]{1}[\w\-_\.]?\.[\w]{2,6}$/i)) {
            return false;
        } else {
            return true;
        }
    }
//-->
</script>

det eneste jeg kan se der er forskel er, at jeg ikke validerer på ip adresser.
Avatar billede Slettet bruger
27. april 2002 - 15:41 #4
hmmmm.... er du sikker ?
Avatar billede jakoba Nybegynder
27. april 2002 - 15:45 #5
i din funktion val tilføjer du:

  if ( f.detenefelt.value != f.detandetfelt.value ) {
      alert ( "det du indtaster i 'detenefelt' skal være det samme som det du indtaster i 'detandetfelt'." );
      return false;
  }

mvh JakobA
Avatar billede limemedia Nybegynder
27. april 2002 - 15:50 #6
questis >> nej, jeg har ikke læst alle linierne igennem. Jeg bruger (er selv forfattern til ovenstående script) på flere websites uden problemer. Det er forbavsende få der render rundt med adresser som mailmig@[127.0.0.1] - det skal forstås sådan, at jeg selv bruger den i driftmiljø
Avatar billede Slettet bruger
27. april 2002 - 15:51 #7
okay.... det vil sige at jeg ligeså godt kan bruge din ???

men hvordan gør jeg det.... fatter intet af Javascript
Avatar billede Slettet bruger
27. april 2002 - 15:53 #8
kanont Jakoba.... det virker perfekt..... venter lige og ser om lijweb vil hjælpe mig med den email funktion... men du skal nok få dine points *SS*
Avatar billede limemedia Nybegynder
27. april 2002 - 15:55 #9
udskift din funktion med

    function emailCheck(str) {
        if(!str.match(/^[\w]{1}[\w\.\-_]?@[\w]{1}[\w\-_\.]?\.[\w]{2,6}$/i)) {
            return false;
        } else {
            return true;
        }
    }

men hør lige jakoba ad engang, han er JS guru - jeg er blot "wannabe" *g*
Avatar billede jakoba Nybegynder
27. april 2002 - 15:56 #10
Hvad med at lade ljweb svare og så give ham dem ( nu jeg er på tråden kan jeg jo læse med :-))

mvh JakobA
Avatar billede limemedia Nybegynder
27. april 2002 - 15:56 #11
... i forhold til kære Jakob
Avatar billede Slettet bruger
27. april 2002 - 15:58 #12
*GG* kan vi da godt sige hvis du ikke har vil have dem...
Avatar billede Slettet bruger
27. april 2002 - 16:01 #13
ljweb>> den skal vel hentes ligesom før...

if (!emailCheck(f.email.value)) return false;

eller hvad ? og hvad med en allert?
Avatar billede limemedia Nybegynder
27. april 2002 - 16:04 #14
jeps... alerten kan du tilføje sådan

if (!emailCheck(f.email.value)) {
  alert('Halløj mester ! Skriv lige en gyldig mail, ik ?');
  return false;
}

ps. du skal nok udskifte min meget politisk korrekte fejlbesked med noget andet :))
Avatar billede limemedia Nybegynder
27. april 2002 - 16:05 #15
For at det skal virke i Netscape skal du vist skrive
if (!emailCheck(document.f.email.value)) {
fremfor
if (!emailCheck(f.email.value)) {
Avatar billede Slettet bruger
27. april 2002 - 16:08 #16
hmmm.... virker ikke har denne kode nu... men den tjekker ikke email og password
Avatar billede Slettet bruger
27. april 2002 - 16:08 #17
<script>
    function emailCheck(str) {
        if(!str.match(/^[\w]{1}[\w\.\-_]?@[\w]{1}[\w\-_\.]?\.[\w]{2,6}$/i)) {
            return false;
        } else {
            return true;
        }
    }


function val(f) {
if (f.navn.value.length < 1) {
alert("du har glemt at indtaste dit navn");
return false;
}
if (!emailCheck(document.f.email.value)) {
  alert('Du har ikke indtastet en gyldig E-mail');
  return false;
}

if (f.password.value.length < 1) {
alert("du har glemt at indtaste dit password");
return false;
}

if ( f.password.value != f.password2.value ) {
      alert ( "Dine passwords er ikke ens." );
      return false;
  }
return true;
}
</script>
Avatar billede jakoba Nybegynder
27. april 2002 - 16:10 #18
endelig ikke en  'document.' foran f her. f er jo en parameter med formobjektet i; fra en
    onsubmit="return val(this)"

mvh JakobA
Avatar billede Slettet bruger
27. april 2002 - 16:15 #19
lige nu er den lidt for effektiv.... den afviser også de gyldige...

if (!emailCheck(f.email.value)) {
  alert('Du har ikke indtastet en gyldig E-mail');
  return false;
}
Avatar billede limemedia Nybegynder
27. april 2002 - 16:18 #20
prøv
---

<script language="JavaScript" type="text/javascript">
<!--
    function emailCheck(str) {
        if(!str.match(/^[\w]{1}[\w\.\-_]?@[\w]{1}[\w\-_\.]?\.[\w]{2,6}$/i)) {
            return false;
        } else {
            return true;
        }
    }
   
    function val(f) {
        if (f.navn.value.length < 1) {
            alert("du har glemt at indtaste dit navn");
            return false;
        }
   
        if (!emailCheck(f.email.value)) {
            alert('Du har ikke indtastet en gyldig E-mail');
            return false;
        }
   
        if (f.password.value.length < 1) {
            alert("du har glemt at indtaste dit password");
            return false;
        }
   
        if ( f.password.value != f.password2.value ) {
            alert ( "Dine passwords er ikke ens." );
            return false;
        }
   
        return true;
    }

//-->
</script>

jeg formaterede den lige for dig, så er det nemt at læse
Avatar billede Slettet bruger
27. april 2002 - 16:21 #21
hmmmm.... prøv denne side:
http://www.questis.dk/koder/asp/forum/login.asp?mode=opret

så kan du se den afviser min email: questis@questis.dk
Avatar billede Slettet bruger
27. april 2002 - 16:33 #22
hmmmm... er i stået af ????
Avatar billede limemedia Nybegynder
27. april 2002 - 16:35 #23
det var selve kaldet der drillede
if (!emailCheck(f.email.value)) {
skulle være
if (emailCheck(f.email.value) == false) {

så virker den

--- koden ---

<html>
<head>
<link rel="stylesheet" type="text/css" href="forum.css">
</head>
<body>

<head>
</style>
<script language="JavaScript" type="text/javascript">
<!--
    function emailCheck(str) {
        if(!str.match(/^[\w]{1}[\w\.\-_]?@[\w]{1}[\w\-_\.]?\.[\w]{2,6}$/i)) {
            return false;
        } else {
            return true;
        }
    }
   
    function val(f) {
        if (f.navn.value.length < 1) {
            alert("du har glemt at indtaste dit navn");
            return false;
        }
   
        if (emailCheck(f.email.value) == false) {
            alert('Du har ikke indtastet en gyldig E-mail');
            return false;
        }
   
        if (f.password.value.length < 1) {
            alert("du har glemt at indtaste dit password");
            return false;
        }
   
        if ( f.password.value != f.password2.value ) {
            alert ( "Dine passwords er ikke ens." );
            return false;
        }
   
        return true;
    }

//-->
</script>

</head>
<center><table cellpadding='2' cellspacing='0' style='border: 1 solid #000000' width='300px'><tr><td bgcolor='#C6C6FF' style='border-bottom: 1 solid #000000' colspan='2'><h1>Opret bruger</h1></td></tr><tr><td><table cellpadding='0' cellspacing='0' width='100%'><tr><td width='75px'><form action='login.asp?mode=opret' method='post' oname='formen' onSubmit='return val(this);'></td></tr><tr><td><h2>Ønsket brugernavn:<br><input name='navn'></h2></td></tr><tr><td><h2>Din E-mail<br><input name='email'></h2></td></tr><tr><td><h2>Password:<br><input name='password'></h2></td></tr><tr><td><h2>Gentag password:<br><input name='password2'></h2></td></tr><tr><td><h2><input type='submit' value='Tilmeld'></h2></td></tr><tr><td><h2></form></h2></td></tr>
</body>
</html>
Avatar billede limemedia Nybegynder
27. april 2002 - 16:36 #24
nej, skulle blot teste og sikre det virkede :))
Avatar billede jakoba Nybegynder
27. april 2002 - 17:12 #25
ljweb >> skal det ikke være * ( 0 til mange ) istedet for ? ( 0 eller 1 )
Avatar billede Slettet bruger
27. april 2002 - 18:40 #26
hvad er det du prøver at sige ???
Avatar billede jakoba Nybegynder
27. april 2002 - 18:42 #27
jeg tror der skal stå:
        if(!str.match(/^[\w]{1}[\w\.\-_]*@[\w]{1}[\w\-_\.]*\.[\w]{2,6}$/i)) {
istedetfor:
        if(!str.match(/^[\w]{1}[\w\.\-_]?@[\w]{1}[\w\-_\.]?\.[\w]{2,6}$/i)) {

mvh JakobA
Avatar billede Slettet bruger
27. april 2002 - 18:46 #28
det hjælper ikke at bruge din sætning i stedet.... den vil heller ikke acceptere email'en
Avatar billede jakoba Nybegynder
27. april 2002 - 18:55 #29
det var sært, det virker fint når jeg prøver:
http://www.jakoba.dk/eksperten/exp203816.html

fortæl evt hvilken email-adresse den ikke vil godkende.

mvh JakobA
Avatar billede Slettet bruger
27. april 2002 - 18:58 #30
<script language="JavaScript" type="text/javascript">
<!--
    function emailCheck(str) {
        if(!str.match(/^[\w]{1}[\w\.\-_]?@[\w]{1}[\w\-_\.]?\.[\w]{2,6}$/i)) {
            return false;
        } else {
            return true;
        }
    }
   
    function val(f) {
        if (f.navn.value.length < 1) {
            alert("du har glemt at indtaste dit navn");
            return false;
        }
   
        if (emailCheck(f.email.value) == false) {
            alert('Du har ikke indtastet en gyldig E-mail');
            return false;
        }
   
        if (f.password.value.length < 1) {
            alert("du har glemt at indtaste dit password");
            return false;
        }
   
        if ( f.password.value != f.password2.value ) {
            alert ( "Dine passwords er ikke ens." );
            return false;
        }
   
        return true;
    }

//-->
</script>


</head>
<%

response.write "<center><table cellpadding='2' cellspacing='0' style='border: 1 solid #000000' width='300px'>"
response.write "<tr><td bgcolor='"&farve1&"' style='border-bottom: 1 solid #000000' colspan='2'><h1>Opret bruger</h1></td></tr>"
response.write "<tr><td><table cellpadding='0' cellspacing='0' width='100%'><tr><td width='75px'><form action='login.asp?mode=tilmeld' method='post' name='formen' onSubmit='return val(this);'></td></tr>"
response.write "<tr><td><h2>Ønsket brugernavn:<br><input name='navn'></h2></td></tr>"
response.write "<tr><td><h2>Din E-mail<br><input name='email'></h2></td></tr>"
response.write "<tr><td><h2>Password:<br><input name='password'></h2></td></tr>"
response.write "<tr><td><h2>Gentag password:<br><input name='password2'></h2></td></tr>"
response.write "<tr><td><h2><input type='submit' value='Tilmeld'></h2></td></tr>"
response.write "<tr><td><h2></form></h2></td></tr>"
%>
Avatar billede limemedia Nybegynder
27. april 2002 - 18:59 #31
det virker fint når jakoba ? til * rettelse er på - fik den snippet ud af sammenhæng for hurtigt ser jeg

hele den saftige kode

---

<html>
<head>
<link rel="stylesheet" type="text/css" href="forum.css">
</head>
<body>

<head>
</style>
<script language="JavaScript" type="text/javascript">
<!--
    function emailCheck(str) {
        if(!str.match(/^[\w]{1}[\w\.\-_]*@[\w]{1}[\w\-_\.]*\.[\w]{2,6}$/i)) {
            return false;
        } else {
            return true;
        }
    }
   
    function val(f) {
        if (f.navn.value.length < 1) {
            alert("du har glemt at indtaste dit navn");
            return false;
        }
   
        if (emailCheck(f.email.value) == false) {
            alert('Du har ikke indtastet en gyldig E-mail');
            return false;
        }
   
        if (f.password.value.length < 1) {
            alert("du har glemt at indtaste dit password");
            return false;
        }
   
        if ( f.password.value != f.password2.value ) {
            alert ( "Dine passwords er ikke ens." );
            return false;
        }
   
        return true;
    }

//-->
</script>

</head>
<center><table cellpadding='2' cellspacing='0' style='border: 1 solid #000000' width='300px'><tr><td bgcolor='#C6C6FF' style='border-bottom: 1 solid #000000' colspan='2'><h1>Opret bruger</h1></td></tr><tr><td><table cellpadding='0' cellspacing='0' width='100%'><tr><td width='75px'><form action='login.asp?mode=opret' method='post' oname='formen' onSubmit='return val(this);'></td></tr><tr><td><h2>Ønsket brugernavn:<br><input name='navn'></h2></td></tr><tr><td><h2>Din E-mail<br><input name='email'></h2></td></tr><tr><td><h2>Password:<br><input name='password'></h2></td></tr><tr><td><h2>Gentag password:<br><input name='password2'></h2></td></tr><tr><td><h2><input type='submit' value='Tilmeld'></h2></td></tr><tr><td><h2></form></h2></td></tr>
</body>
</html>

testet med IE6
Avatar billede limemedia Nybegynder
27. april 2002 - 19:01 #32
du mangler jakoba's fix med ? til * - så virker den glimragende
Avatar billede Slettet bruger
27. april 2002 - 19:03 #33
har denne istedet:
        if(!str.match(/^[\w]{1}[\w\.\-_]?@[\w]{1}[\w\-_\.]?\.[\w]{2,6}$/i)) {
Avatar billede limemedia Nybegynder
28. april 2002 - 02:53 #34
ja, og når ? er omskrevet til * virker det
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