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>
<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>
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>