Avatar billede rane Nybegynder
16. august 2006 - 12:55 Der er 8 kommentarer og
1 løsning

Validering af flere emails

Der findes mange måder at validere en enkelt email på i en form.  Men nu er jeg ved at lave en "Tip en Ven" funktion hvor brugeren kan indtaste flere email adresse i samme felt, med adskillelse af et komma. Replacer så evt. mellemrum via ASP.

Hvordan tjekker jeg at der er indtastet mindst ét @ og mindst ét punktum i det felt? 

For jeg går ud fra at X antal email adresser jo er ukendt så det er næsten umulig at validere alle email adresserne.
Avatar billede fennec Nybegynder
16. august 2006 - 13:36 #1
Jeg kan sagtens laves et script i ASP, som tjekker alle emails, hvis det er noget??

Det kan også laves i JS, men jeg har aldrig helt fundet ud af hvordan RegExp syntaxen er i JS, og jeg kan ikke få mit ASP pattern til at virke i JS.
Avatar billede rane Nybegynder
16. august 2006 - 14:38 #2
Joo det må du da gerne. Lige nu har jeg følgende ASP kode:

modtageremail = Replace(Replace(request.form("modtageremail"), " ", ""), ";", ",")
emails = Split(modtageremail, ",")

for i = Lbound(emails) to Ubound(emails)
  optionArr = split(emails(i),",")
  for j = Lbound(optionArr) to Ubound(optionArr)
    msg.AddRecipient optionArr(j)
  next
next

(Det er Jmail, den del med msg.AddRecipient)
Avatar billede Slettet bruger
16. august 2006 - 14:41 #3
Det må maks være 1 @.
var email = "test@test.dk";
if(string.indexOf(@) == 1) {
alert('Der var en');
} else {
alert('Error...!');
}
Avatar billede Slettet bruger
16. august 2006 - 14:42 #4
OG så med . også
var email = "test@test.dk";
if(email.indexOf('@') == 1 && email.indexOf('.') >= 1) {
alert('Godkendt');
} else {
alert('Error...!');
}
Avatar billede fennec Nybegynder
16. august 2006 - 14:49 #5
Hvorfor har du et dobbelt loop (emails og optionArr)??

Hvad indeholder emails(i) siden du skal splitte den op igen??
Avatar billede fennec Nybegynder
16. august 2006 - 14:51 #6
Et bud på en kode ville være dette. Så tilføjer den kun gyldige emails til modtager listen:

function checkEmail(fEmail)
dim fMailRx
  Set fMailRx = New RegExp
  fMailRx.Global = True
  fMailRx.IgnoreCase = True
  fMailRx.Pattern = "^\w[\w\.\-\+]*@\w([\w\-]*\.)+\w{2}\w*$"
  checkEmail = fMailRx.test(fEmail&"")
  Set fMailRx = nothing
end function


for i = Lbound(emails) to Ubound(emails)
  optionArr = split(emails(i),",")
  for j = Lbound(optionArr) to Ubound(optionArr)
    if checkEmail(optionArr(j)) then
      msg.AddRecipient optionArr(j)
    end if
  next
next
Avatar billede rane Nybegynder
16. august 2006 - 15:06 #7
Dobbeltloopet kan jeg ikke helt forklare. Det er noget kode der tidligere var blevet brugt på sitet.

Hvordan reagerer den hvis en email ikke er gyldig?  Går koden/siden så i ged eller sender den bare ikke til den ugyldige email?
Avatar billede rane Nybegynder
17. august 2006 - 08:55 #8
Det lader til at virke, fennec. Endnu engang er du redningsmanden :)  svar?
Avatar billede fennec Nybegynder
17. august 2006 - 09:06 #9
.o) <-- One Eyed Jack
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