brwMedlem sedan juli 2000619 inlägg
Nu tror jag att jag blir galen.. varför får jag inte checken att fungera? Tror att jag prova allt nu....
<SCRIPT language="text/javascript">
function checkemail(EMail) {
var errorString
var EMailAt = EMail.indexOf("@")
var InvalidChar = "\\/`~!#$%^*()+=|]}[{:;',?"
var LenInvalidChar = (InvalidChar.length - 1)
var EMailDot = EMail.lastIndexOf(".")
var Counter = 0
var WhichChar = ""
errorString = ""
if (EMail.length < 5)
{
return " E-Mail address must be at least 5 characters."
}
if (EMailAt == -1)
{
return " E-Mail format must be like [email]name@provider.com[/email]."
}
if (EMailDot == -1)
{
return " E-Mail format must be like [email]name@provider.com[/email]."
}
if (EMailAt > EMailDot)
{
return " E-Mail format must be like [email]name@provider.com[/email]."
}
if (EMailAt == EMailDot -1)
{
return " E-Mail format must be like [email]name@provider.com[/email]."
}
if ((EMailAt + 3) > EMail.length)
{
return " E-Mail format must be like [email]name@provider.com[/email]."
}
if (EMail.indexOf(" ") != -1)
{
return " E-mail address cannot contain spaces."
}
while (Counter <= LenInvalidChar)
{
WhichChar = InvalidChar.substring(Counter,Counter+1)
if (EMail.indexOf(WhichChar) != -1)
{
return " E-Mail address cannot contain the " + WhichChar + " character."
}
Counter = Counter + 1
}
return ""
}
</SCRIPT>
<p><b><font face="Verdana">Test av emailcheck på formulärt....<br>
<br>
</font></b></p>
<form method="POST" action="test_epostcheck.asp" name="EMail">
<p><input type="text" name="EMail" size="20">
<input type="submit" value="Submit" onClick="return checkemail(EMail)"></p>
</form>
JohnsenMedlem sedan juli 2000718 inlägg
En del elementära fel.
Prova detta:
<SCRIPT [b]language="JavaScript" type="text/javascript"[/b]>
function checkemail(EMail) {
var errorString
var EMailAt = EMail.indexOf("@")
var InvalidChar = "\\/`~!#$%^*()+=|]}[{:;',?"
var LenInvalidChar = (InvalidChar.length - 1)
var EMailDot = EMail.lastIndexOf(".")
var Counter = 0
var WhichChar = ""
errorString = ""
if (EMail.length < 5)
{
[b]errorString =[/b] " E-Mail address must be at least 5 characters."
}
if (EMailAt == -1)
{
[b]errorString =[/b] " E-Mail format must be like [email]name@provider.com[/email]."
}
if (EMailDot == -1)
{
[b]errorString =[/b] " E-Mail format must be like [email]name@provider.com[/email]."
}
if (EMailAt > EMailDot)
{
[b]errorString =[/b] " E-Mail format must be like [email]name@provider.com[/email]."
}
if (EMailAt == EMailDot -1)
{
[b]errorString =[/b] " E-Mail format must be like [email]name@provider.com[/email]."
}
if ((EMailAt + 3) > EMail.length)
{
[b]errorString =[/b] " E-Mail format must be like [email]name@provider.com[/email]."
}
if (EMail.indexOf(" ") != -1)
{
[b]errorString =[/b] " E-mail address cannot contain spaces."
}
while (Counter <= LenInvalidChar)
{
WhichChar = InvalidChar.substring(Counter,Counter+1)
if (EMail.indexOf(WhichChar) != -1)
{
[b]errorString =[/b] " E-Mail address cannot contain the " + WhichChar + " character."
}
Counter = Counter + 1
}
[b]if(errorString != ""){alert(errorString); return false; }[/b]
}
</SCRIPT>
<p><b><font face="Verdana">Test av emailcheck på formulärt....<br>
<br>
</font></b></p>
<form method="POST" action="test_epostcheck.asp" name="EMail" [b]onsubmit[/b]="return checkemail([b]this.EMail.value[/b])">
<p><input type="text" name="EMail" size="20">
<input type="submit" value="Submit"></p>
</form>
Peter SMedlem sedan dec. 20025 484 inlägg
Det finns flera orskaker till varför ditt skript inte fungerar:
1. checkemail() skall ligga i ett "onsubmit"-attribut i <form>.
2. Såväl den formella, som den aktuella parametern, har samma namn. Den aktuella, d.v.s. den du skickar med, skall ersättas med en referens till <input>-elementet.
3. Varför har du deklarerat och definierat variabeln "errorString" när den inte används?
4. För läsbarhetens skull bör du använda dig av semikolon på lämpliga ställen.
5. I varje if-sats (samt i while-satsen) returnerar du en sträng. Var och hur hade du tänkt att den skulle visas?
6. Avslutningsvis tänker du returnera en tom sträng. Varför det?
Nåja, efter att ha studerat din kod, skrev jag ihop ett kodexempel så som jag tror att du vill ha det:
function checkemail(EMail) {
var errorString = "";
var EMailAt = EMail.indexOf("@");
var EMailDot = EMail.lastIndexOf(".");
var InvalidChar = "\\/`~!#$%^*()+=|]}[{:;',?";
if(EMail.length < 5) errorString += "E-Mail address must be at least 5 characters.\n";
if(EMailAt == -1 || EMailDot == -1) errorString += "E-Mail format must be like [email]name@provider.com[/email].\n";
if(EMail.indexOf(" ")!=-1) errorString += "Email address cannot contain spaces.\n";
for(var i=0; i<EMail.length; i++){
for(var j=0; j<InvalidChar.length; j++){
if(EMail.charAt(i) == InvalidChar.charAt(j))
errorString += "E-mail address cannot contain the "+ InvalidChar.charAt(j)+" character.\n";
}
}
if(errorString.length > 0){
alert(errorString);
return false;
}
return true;
};
<form method="POST" action="test_epostcheck.asp" name="EMail" onsubmit="return checkemail(this.elements['EMail'].value)">
<p><input type="text" name="EMail" size="20">
<input type="submit" value="Submit"></p>
</form>
Rätt?
:)
brwMedlem sedan juli 2000619 inlägg
Tackar så mycket för ett fungerande script!
Hittade faktiskt scriptet på en sida nånstans så har jag försökt länge och få igång det... . Nu fungerar det precis som jag vill...
Men en fråga är hur jag gör om jag vill kolla flera fält hur blir det med:
onsubmit="return checkemail(this.elements['EMail'].value)"
i formtaggen...
ska jag bara skapa en ny funktion för dom fälten och sen bara lägga till i onsubmit return checknamn osv?
:)
Peter SMedlem sedan dec. 20025 484 inlägg
Det bästa vore nog att skapa en funktion som validerar samtliga fält. In-parametern skulle kunna vara:
...(this.elements)
Sedan loopar du igenom alla fält och validerar dessa efter dina önskemål.
Förslagsvis byter du då även namn på funktionen. ;)
:)