aspMedlem sedan aug. 2002733 inlägg 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>
först: Välkommen till wF
Behöver inte inputen ett namn för detta?
aspMedlem sedan aug. 2002733 inlägg tack...
det fungerar inte med att sätta namn häller. Någon annan som vet?
UlfTMedlem sedan maj 20018 027 inlägg 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.
UlfTMedlem sedan maj 20018 027 inlägg
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 Jag har provat men det fungerar inte. Kan inte du prova?
UlfTMedlem sedan maj 20018 027 inlägg 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>
tänk på att javascript är petig med stora och små bokstäver...
aspMedlem sedan aug. 2002733 inlägg UlfT: Får du det att fungera? Jag får inte det!
JojoxxMedlem sedan juni 20004 308 inlägg 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
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.