Jag trodde jag skulle hitta det här i detta forum men faktiskt inte.
Jag har letat efter ett script som validerar email. Det ska helt enkelt kolla att det är en godkänd epost (blabla@blabla.com etc).
Skulle uppskatta hjälp ;)
18 svar · 1 024 visningar · startad av Webslave
Jag trodde jag skulle hitta det här i detta forum men faktiskt inte.
Jag har letat efter ett script som validerar email. Det ska helt enkelt kolla att det är en godkänd epost (blabla@blabla.com etc).
Skulle uppskatta hjälp ;)
Det där verkar inte vara så säkert... det ser ut som om man bara behöver ha ett "@" med så är det ok, jag tänkte mer på något som kollar att det står något framför "@", bakom "@" och att det är .com/net/se/nu etc på slutet... några andra idéer?
Jag kör med den här på min sida,
function checkEmail(email)
{
var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
var reg1 = new RegExp(reg1str)
var reg2 = new RegExp(reg2str)
return ((!reg1.test(email)) && (reg2.test(email)))
}
Kommer inte ihåg vad den kollar efter men du kan ju prova den om den duger :)
/Viktor
Det skulle jag jätte gärna om jag förstod någonting alls av den :)
För det första så ser jag inget alert kommando som talar om att det inte är en giltig adress, sedan så vet jag inte direkt hur man kopplar den till mitt formulär (vad formuläret ska heta dvs.) Om någon kunde förklara detta så skulle det nog hjälpa :D
Validering
Du kan ju testa den här. Jag har lagt in alert där när det blir fel.
<HTML>
<HEAD>
<TITLE></TITLE>
<SCRIPT LANGUAGE="JavaScript">
function check(str){
var mailPattern = /^[\w\.\-]+@[\w\-\.]+\.[a-z]{2,3}$/i;
if(mailPattern.test(str)){
return true;
} else {
alert('Felaktig mailadress');
return false;
}
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="formen" ACTION="ny_sida.asp" onSubmit="return check(formen.text1.value);">
Email:<BR>
<INPUT TYPE="text" NAME="text1" SIZE="20">
<BR>
<INPUT TYPE="submit" VALUE="Skicka">
<BR>
</BODY>
</HTML>
//Broskan
Webslave skrev:
Det skulle jag jätte gärna om jag förstod någonting alls av den :)
För det första så ser jag inget alert kommando som talar om att det inte är en giltig adress, sedan så vet jag inte direkt hur man kopplar den till mitt formulär (vad formuläret ska heta dvs.) Om någon kunde förklara detta så skulle det nog hjälpa :D
Det är en funktion, dvs från en annan funktion skickar du med epost adressen till den funktionen som jag postade, om epost adressen är rätt så retuneras true annars false :)
function test()
{
if(!checkEmail(document.register.email.value))
alert("Please enter a valid email address.");
else
document.register.submit();
}
/Viktor
DELETE
Ok... tackar för alla tips, jag kom dock på en sak. Jag har glömt att säga att jag redan har en OnSubmit koll till det formuläret. Kan någon hjälpa mig att "lägga in" email kollen i det scriptet?
function KollaPassword(){
if (document.redigera.password.value != document.redigera.password2.value){
document.redigera.password.value="";
document.redigera.password2.value="";
alert("Lösenorden måste vara lika!")
return false
}
var pass1 = document.redigera.password.value;
var pass2 = document.redigera.password2.value;
if((pass1.length !=0) && (pass2.length !=0)){
return true;
}
else{
alert("Du måste fylla i båda lösenorden!");
return false;
}
}
Om det inte går så får jag lov att tacka i alla fall ;)
Jag antar att du har en funktion som ser ut såhär (typ)
function test()
{
if(KollaPassword())
document.register.submit();
}
då är det bara att ändra den till detta (och lägga till den funktion som jag skrev ovan och din "KollaPassword" funktion. Då måste även byta ut checkEmail argumentet så att du skickar med rätt text box
function test()
{
if(KollaPassword())
{
if(!checkEmail(document.register.email.value))
alert("Please enter a valid email address.");
else
document.register.submit();
}
}
/Viktor
Nu blev jag yr... kan du skriva ut hela koden som du vill att jag ska lägga in... blev för mycket om jag ska klippa och klistra... jag kan inte JavaScript (som om det inte märks).
Du kan även visa vart min funktion ska ligga, så att jag slipper fråga ÄNNU mer :)
PS. Funktionen jag har ser ut som den jag postade alldeles ovanför ditt senaste DS.
ok, om det är all kod som du har så blir den nya koden såhär
Som vanligt så får du ändra parametern för checkEmail till ditt email fält
//Start new code
function checkEmail(email)
{
var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
var reg1 = new RegExp(reg1str)
var reg2 = new RegExp(reg2str)
return ((!reg1.test(email)) && (reg2.test(email)))
}
//End new code
function KollaPassword()
{
// Start new code
if(!checkEmail(document.register.email.value))
{
alert("Please enter a valid email address.");
return(false);
}
//End new code
if(document.redigera.password.value != document.redigera.password2.value)
{
document.redigera.password.value="";
document.redigera.password2.value="";
alert("Lösenorden måste vara lika!")
return false
}
var pass1 = document.redigera.password.value;
var pass2 = document.redigera.password2.value;
if((pass1.length !=0) && (pass2.length !=0))
{
return true;
}
else
{
alert("Du måste fylla i båda lösenorden!");
return false;
}
}
Ok... tacakr :)
??
Du kör bara som du alltid har kört :) Om email adressen är rätt så händer inget om den är fel så kommer ett felmedelande upp och funktionen retunerar false.
Du anroppar bara "KollaPassword()", som i sin tur anroppar "checkEmail(email)".
/Viktor
Snickrade ihop en liten String-prototype med ett regexp. Borde vara rätt ok.
String.prototype.isValidEmail = function(){
return !!this.match(/^([a-zA-Z0-9]{1}([a-zA-Z0-9|.|-|_]*)[a-zA-Z0-9]{1})@([a-zA-Z0-9]{1}([a-zA-Z0-9|.|-|_]*)[a-zA-Z0-9]{1})\.([a-zA-Z]{2,4})$/)
}
Alltså;
var epost="someadress@domain.com";
if(epost.isValidEmail()){
// e-post adressen är ok.
} else {
// eller inte.
}
Obs. att prototypen måste vara registrerad innan anropet sker.
Jojoxx skrev:
String.prototype.isValidEmail = function(){ return !!this.match(/^([a-zA-Z0-9]{1}([a-zA-Z0-9|.|-|_]*)[a-zA-Z0-9]{1})@([a-zA-Z0-9]{1}([a-zA-Z0-9|.|-|_]*)[a-zA-Z0-9]{1})\.([a-zA-Z]{2,4})$/) }
Jag har använt ovanstående ett bra tag, men upptäckte igår att den gnäller på epostadresser med - (bindestreck) i.
Det är inte så bra, skulle vilja få med det i mönstret ovan, men vet inte hur jag ska göra.
Tack!
HEJ!
Eftersom det står [a-zA-Z0-9|.|-|_] på några ställen får du ge ett exempel på den adress du vill godkänna.
Eller stoppar du in |.|-|_ mellan de klamrar där du vill ha med det.