webForumDet fria alternativet

E-mail kontroll........

11 svar · 425 visningar · startad av asp

aspMedlem sedan aug. 2002733 inlägg
#1

Vad är det för fel på denna kod?

<html>
<head>
<title>Untitled</title>

<SCRIPT LANGUAGE="JavaScript">
function kollaAdress(adress) {
if (!/^.+@.+\..+$/.test(adress)) {
alert("Adressen stämmer inte.");
return;

}
alert("Adressen är godkänd.");
} 
</SCRIPT>
</head>

<body> 
<form>
<input type="text" onChange="kollaAdress(this.value);">
</form>
</body>

</html>
voigtann1Medlem sedan juni 20019 519 inlägg
#2

först: Välkommen till wF

Behöver inte inputen ett namn för detta?

aspMedlem sedan aug. 2002733 inlägg
#3

tack...

det fungerar inte med att sätta namn häller. Någon annan som vet?

UlfTMedlem sedan maj 20018 027 inlägg
#4

Med reservation för att jag inte vet hur regexp hanteras i Javascript, jag tycker det ser helt fel ut att förvänta sig att en regexp-sträng skulle kunna ha några metoder i sig själv. Jag hade väntat mig att testen skulle kunna se ut ungefär enligt följande:

if (![b]RegExp[/b].test("/^.+@.+\..+$/", adress)) {
alert("Adressen stämmer inte.");
return;
}

Det här uttrycket: "/^.+@.+\..+$/" är ju bara en serie tecken. Hur skulle det i sig själv kunna ha några metoder för att testa? Snarare används det nog som ett argument till någon metod för reguljära uttryck.

aspMedlem sedan aug. 2002733 inlägg
#5

funegrar inte...

UlfTMedlem sedan maj 20018 027 inlägg
#6

asp skrev:

funegrar inte...

Skrev du av precis vad jag hade skrivit? Notera att jag betonade att jag inte visste riktigt hur man gör just i javascript. Jag bara såg att det du skrev, knappast kunde vara riktigt. Nåja, jag kollade lite och har kommit fram till följande:

var reg = new RegExp("/^.+@.+\..+$/"); // Ett regexp har skapats

if ( !reg.test(adress) ) { // Nu används en metod i regexpet
alert("Adressen stämmer inte.");
return;
}
aspMedlem sedan aug. 2002733 inlägg
#7

Jag har provat men det fungerar inte. Kan inte du prova?

UlfTMedlem sedan maj 20018 027 inlägg
#8

Nu har jag provat. Först strulade det, men efter att ha ändrat lite på det reguljära uttrycket, fick jag det att ge rätt besked:

<html>
<head>
<title>Untitled</title>

<SCRIPT LANGUAGE="JavaScript">
function kollaAdress(adress) {

// Notera att regexp-strängen är något modifierad jämfört med hur du skrev
// I början och slutet slängdes "/" bort,
var reg = new RegExp("^.+@.+\..+$"); // Ett regexp har skapats

if ( !reg.test(adress) ) { // Nu används en metod i regexpet
alert("Adressen stämmer inte.");
return;
}
alert("Adressen är godkänd.");
}
 
</SCRIPT>
</head>

<body> 
<form>
<input type="text" onChange="kollaAdress(this.value);">
</form>
</body>

</html>
voigtann1Medlem sedan juni 20019 519 inlägg
#9

tänk på att javascript är petig med stora och små bokstäver...

aspMedlem sedan aug. 2002733 inlägg
#10

UlfT: Får du det att fungera? Jag får inte det!

JojoxxMedlem sedan juni 20004 308 inlägg
#11

Använd denna prototype annars. Den har även ett bättre regexp.

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})$/)
}

Då kan din funktion alltså se ut så här:

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})$/)
}
function kollaAdress(adress) {
	if(adress.isValidEmail){
		alert("Adressen är godkänd.");
	} else {
		alert("Adressen stämmer inte.");
	}
}
UlfTMedlem sedan maj 20018 027 inlägg
#12

asp skrev:

UlfT: Får du det att fungera? Jag får inte det!

Precis den texten som jag har i mitt inlägg, lade jag i en fil med namnet "mail.asp". Den filen har jag i den hemkatalog som gäller för min IIS-installation. Då skriver jag bara http://localhost/mail.asp . Då funkar det.

126 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)