webForumDet fria alternativet

Hjälp med validering av email!!

19 svar · 1 400 visningar · startad av Rosenkvist

RosenkvistMedlem sedan feb. 201214 inlägg
#1

Hej
Kan någon snäll kolla över min kod och se vad jag gör för fel!! Mitt problem är att jag inte kan validera fältet e-mail så att det görs kontroll på om mailadressen är korrekt angiven.

Här är min kod:

<script language="JavaScript" type="text/javascript">
 
<!--

   function kollabokstaver (str)
    {
      var index;
      str = str.toLowerCase ();
      for (index = 0; index < str.length; ++index)
        if ('abcdefghijklmnopqrstuvwxyzåäö'.indexOf
            (str.substring (index, index + 1)) == -1)
          return false;
 
      return true;
    }
 
    
    function kollasiffror (str)
    {
      var index;
      for (index = 0; index < str.length; ++index)
        if ('0123456789'.indexOf (str.substring
            (index, index + 1)) == -1)
          return false;
 
      return true;
    }
 
    
    function kollaformularet (form)
    {
      if (form.fornamn.value.length == 0)
        alert ('Skriv dit ditt förnamn.');
      else if (!kollabokstaver (form.fornamn.value))
        alert ('Förnamnet kan inte bara vara siffror.');
 
      else if (form.efternamn.value.length == 0)
        alert ('Skriv dit ditt efternamn.');
      else if (!kollabokstaver (form.efternamn.value))
        alert ('Efternamnet kan inte bara vara siffror.');
 
      else if (form.adress.value.length == 0)
        alert ('Skriv in en adress.');
 
      else if (form.postnummer.value.length == 0)
        alert ('Skriv dit ett postnummer.');
      else if (!kollasiffror (form.postnummer.value))
        alert ('Postnummer har inga bokstäver.');
      else if (form.postnummer.value.length != 5)
 
       alert ('Postnumret har inte fem siffror inskrivet.');
 
      else if (form.postadress.value.length == 0)
        alert ('Skriv dit en postadress.');
      else if (!kollabokstaver (form.postadress.value))
       alert ('Postadressen kan inte bara vara siffror.');
	   
       else if (form.telefon.value.length == 0)
        alert ('Skriv dit ett telefonnummer.');
      else if (!kollasiffror (form.telefon.value))
        alert ('Telefonnummer har inga bokstäver.');
		
      else
        return true;
 
      return false;
	  
	  var testresults
function checkemail(){
var str=document.validation.emailcheck.value
var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
if (filter.test(str))
testresults=true
else{
alert("Please input a valid email address!")
testresults=false
}
return (testresults)
}
    }
	//-->
  </script>
 
</head>
 

<form action ="mailto:din@email.se" method ="post" enctype="text/plain" onSubmit ="return kollaformularet (this);">

<tr> <td> F&ouml;rnamn:</td>
<td> <input type ="text" name ="fornamn"></td></tr>
<tr> <td> Efternamn:</td>
<td> <input type= "text" name = "efternamn"></td></tr><br>
<tr> <td> Adress:</td>
<td> <input type="text" name="adress"></td></tr>
<tr> <td> Postnummer:</td>
<td> <input type ="text" name ="postnummer" maxlength =5></td></tr>
<tr> <td> Postadress:</td>
<td> <input type ="text" name = "postadress"</td></tr>
<tr> <td> Telefon:</td>
<td> <input type="text" name ="telefon"</td></tr>

<td> <td>E-mail:</td>
<td> <input type="text" size=18 name="emailcheck"</td></tr>

<tr valign=top> <td> Best&auml;ll:</td>
<td> <textarea name = "bestall" rows=10 cols =17></textarea></td></tr>
<tr><td>&#160;</td>
<td><input type ="submit" value = "S&auml;nd">
<input type ="reset" value = "Radera"></td></tr>
</table>
</form>
</body>
b242569Medlem sedan sep. 20051 760 inlägg
#2

Jag tror att det ska vara en } före

var testresults
function checkemail(){

Upptäckte även att det under return (testresults) är två rader med }. Jag tror alltså att den ena ska flyttas högre upp eller ska funktionen checkemail vara inne i funktionen kollaformularet? En funktion ska väl avsluta med en return-sats?

Kanske att det även ska vara return testresults (utan parenteser).

PalleMedlem sedan apr. 20003 174 inlägg
#3

Flyttar tråden från Script - JavaScript, DHTML.

PalleMedlem sedan apr. 20003 174 inlägg
#4

Strukturerade upp koden lite för bättre läsbarhet, och som b242569 säger har du nog råkat kasta om lite tecken på några ställen.

Hur fungerar denna koden för dig?

<script type="text/javascript">

function kollabokstaver(str){
	var index;
	str = str.toLowerCase ();
	for (index = 0; index < str.length; ++index){
		if ('abcdefghijklmnopqrstuvwxyzåäö'.indexOf(str.substring (index, index + 1)) == -1){
			return false;
		}
	}
	return true;
}

function kollasiffror(str){
	var index;
	for (index = 0; index < str.length; ++index){
		if ('0123456789'.indexOf (str.substring(index, index + 1)) == -1){
			return false;
		}
	}
	return true;
}

function kollaformularet(form){
	if (form.fornamn.value.length == 0){
		alert('Skriv dit ditt förnamn.');
	} else if (!kollabokstaver(form.fornamn.value)){
		alert('Förnamnet kan inte bara vara siffror.');
	} else if (form.efternamn.value.length == 0){
		alert('Skriv dit ditt efternamn.');
	} else if (!kollabokstaver(form.efternamn.value)){
		alert('Efternamnet kan inte bara vara siffror.');
	} else if (form.adress.value.length == 0){
		alert('Skriv in en adress.');
	} else if (form.postnummer.value.length == 0){
		alert('Skriv dit ett postnummer.');
	} else if (!kollasiffror (form.postnummer.value)){
		alert('Postnummer har inga bokstäver.');
	} else if (form.postnummer.value.length != 5){
		alert('Postnumret har inte fem siffror inskrivet.');
	} else if (form.postadress.value.length == 0){
		alert('Skriv dit en postadress.');
	} else if (!kollabokstaver(form.postadress.value)){
		alert('Postadressen kan inte bara vara siffror.');
	} else if (form.telefon.value.length == 0){
		alert('Skriv dit ett telefonnummer.');
	} else if (!kollasiffror (form.telefon.value)){
		alert('Telefonnummer har inga bokstäver.');
	} else{
		return true;
	}
	return false;
}

function checkemail(){
	var testresults,
		str=document.validation.emailcheck.value,
		filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	if (filter.test(str)){
		testresults=true;
	}else{
		alert("Please input a valid email address!");
		testresults=false;
	}
	return testresults;
}

</script>
RosenkvistMedlem sedan feb. 201214 inlägg
#5

Fortfarande fel...

Tack för er hjälp..men det blir en massa fel då jag lägger til kod så det blir såhär:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
<meta name="description" content="description"/>
<meta name="keywords" content="keywords"/> 
<meta name="author" content="author"/> 
<link rel="stylesheet" type="text/css" href="default.css" />

<!--[if IE]>
   <link rel="stylesheet" type="text/css" href="stilmallie.css" />
<![endif]-->
<link rel="stylesheet" type="text/css" href="css/style_print.css" media="print" />

<title>Johannas Portfolio</title>
</head>

<body>
<script type="text/javascript">

function kollabokstaver(str){
	var index;
	str = str.toLowerCase ();
	for (index = 0; index < str.length; ++index){
		if ('abcdefghijklmnopqrstuvwxyzåäö'.indexOf(str.substring (index, index + 1)) == -1){
			return false;
		}
	}
	return true;
}

function kollasiffror(str){
	var index;
	for (index = 0; index < str.length; ++index){
		if ('0123456789'.indexOf (str.substring(index, index + 1)) == -1){
			return false;
		}
	}
	return true;
}

function kollaformularet(form){
	if (form.fornamn.value.length == 0){
		alert('Skriv dit ditt förnamn.');
	} else if (!kollabokstaver(form.fornamn.value)){
		alert('Förnamnet kan inte bara vara siffror.');
	} else if (form.efternamn.value.length == 0){
		alert('Skriv dit ditt efternamn.');
	} else if (!kollabokstaver(form.efternamn.value)){
		alert('Efternamnet kan inte bara vara siffror.');
	} else if (form.adress.value.length == 0){
		alert('Skriv in en adress.');
	} else if (form.postnummer.value.length == 0){
		alert('Skriv dit ett postnummer.');
	} else if (!kollasiffror (form.postnummer.value)){
		alert('Postnummer har inga bokstäver.');
	} else if (form.postnummer.value.length != 5){
		alert('Postnumret har inte fem siffror inskrivet.');
	} else if (form.postadress.value.length == 0){
		alert('Skriv dit en postadress.');
	} else if (!kollabokstaver(form.postadress.value)){
		alert('Postadressen kan inte bara vara siffror.');
	} else if (form.telefon.value.length == 0){
		alert('Skriv dit ett telefonnummer.');
	} else if (!kollasiffror (form.telefon.value)){
		alert('Telefonnummer har inga bokstäver.');
	} else{
		return true;
	}
	return false;
}

function checkemail(){
	var testresults,
		str=document.validation.emailcheck.value,
		filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	if (filter.test(str)){
		testresults=true;
	}else{
		alert("Please input a valid email address!");
		testresults=false;
	}
	return testresults;
}

</script>

</head>

<form action ="mailto:din@email.se" method ="post" enctype="text/plain" onSubmit ="return kollaformularet (this);">

<td> F&ouml;rnamn:</td>
<td> <input type ="text" name ="fornamn"></td>
 <td> Efternamn:</td>
<td> <input type= "text" name = "efternamn"></td><br>
 <td> Adress:</td>
<td> <input type="text" name="adress"></td>
 <td> Postnummer:</td>
<td> <input type ="text" name ="postnummer" maxlength =5></td>
 <td> Postadress:</td>
<td> <input type ="text" name = "postadress"</td>
 <td> Telefon:</td>
<td> <input type="text" name ="telefon"</td>

<td> <td>E-mail:</td>
<td> <input type="text" size=18 name="emailcheck"</td>

<tr valign=top> <td> Best&auml;ll:</td>
<td> <textarea name = "bestall" rows=10 cols =17></textarea></td>
<tr><td>&#160;</td>
<td><input type ="submit" value = "S&auml;nd">
<input type ="reset" value = "Radera"></td>

</form>
</body>

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

document.validation.emailcheck.value

du har inget formulär som har det namnet + du anropar ju aldrig metoden checkemail

Du kan ju också skriva om metoden checkemail så den följer resten av din kod:

<script type="text/javascript">

function checkemail(value){
	var testresults,
		filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	return filter.test(value);
}

function kollabokstaver(str){
	var index;
	str = str.toLowerCase ();
	for (index = 0; index < str.length; ++index){
		if ('abcdefghijklmnopqrstuvwxyzåäö'.indexOf(str.substring (index, index + 1)) == -1){
			return false;
		}
	}
	return true;
}

function kollasiffror(str){
	var index;
	for (index = 0; index < str.length; ++index){
		if ('0123456789'.indexOf (str.substring(index, index + 1)) == -1){
			return false;
		}
	}
	return true;
}

function kollaformularet(form){
	if (form.fornamn.value.length == 0){
		alert('Skriv dit ditt förnamn.');
	} else if (!kollabokstaver(form.fornamn.value)){
		alert('Förnamnet kan inte bara vara siffror.');
	} else if (form.efternamn.value.length == 0){
		alert('Skriv dit ditt efternamn.');
	} else if (!kollabokstaver(form.efternamn.value)){
		alert('Efternamnet kan inte bara vara siffror.');
	} else if (form.adress.value.length == 0){
		alert('Skriv in en adress.');
	} else if (form.postnummer.value.length == 0){
		alert('Skriv dit ett postnummer.');
	} else if (!kollasiffror (form.postnummer.value)){
		alert('Postnummer har inga bokstäver.');
	} else if (form.postnummer.value.length != 5){
		alert('Postnumret har inte fem siffror inskrivet.');
	} else if (form.postadress.value.length == 0){
		alert('Skriv dit en postadress.');
	} else if (!kollabokstaver(form.postadress.value)){
		alert('Postadressen kan inte bara vara siffror.');
	} else if (form.telefon.value.length == 0){
		alert('Skriv dit ett telefonnummer.');
	} else if (!kollasiffror (form.telefon.value)){
		alert('Telefonnummer har inga bokstäver.');
	} else if(!checkemail(form.emailcheck.value)) {
		alert('Please input a valid email address!');
	} else {
		return true;
	}
	return false;
}

</script>

Sen är det aldrig bra att namnge metoder eller variabler på svenska

RosenkvistMedlem sedan feb. 201214 inlägg
#7

Koden funkar men när jag validerar på w3c får jag 39 Errors, 5 warning(s)....

voigtann1Medlem sedan juni 20019 519 inlägg
#8

Det är ju för att din HTML kod är felaktig, du ha td och tr men du har ingen table element... Har inget med JS koden

RosenkvistMedlem sedan feb. 201214 inlägg
#9

suck...helt lost...och med deadline som närmar sig.... :-(

voigtann1Medlem sedan juni 20019 519 inlägg
#10

Det är ju bara att bygga upp tabellen på ett korrekt sätt, stäng elementen där dom skall vara (även om de flesta webbläsarna fixar detta åt dig oavsett). Förstå inte riktigt varför du skall ha det i en tabell i huvudtaget.

RosenkvistMedlem sedan feb. 201214 inlägg
#11

egentligen ska jag inte alls använda mig av tabeller...Min kod är en mischmasch av kod jag hittat på nätet...suck...Har du ngt förslag på hur jag gör UTAN tabeller? **evigt tacksam **

voigtann1Medlem sedan juni 20019 519 inlägg
#12

Vad är det för deadline?

RosenkvistMedlem sedan feb. 201214 inlägg
#13

ett projekt där jag fått denna uppgift...tyvärr..deadline imorgon

voigtann1Medlem sedan juni 20019 519 inlägg
#14

Du kan ju börja ta bort alla element som är kopplade till en tabell (<td>)

Sen delar upp dina kod och radbrytningar där det kan vara. Om du ha fått uppgiften i ett projekt så borde du väl ha förkunskaper om html?

RosenkvistMedlem sedan feb. 201214 inlägg
#15

jo, jag har vissa förkunskaper i html, men de är inte så färska. Vi är fler som delar på uppgiften men alla har blivit sjuka så det föll på mig att slutföra..Sak samma...Jag försöker göra detta klart samtidigt som jag har två sjuka barn att ta hand om så det är därför jag ber om hjälp..Det blir lite för mycket ibland... :-(

Ska göra som du sa...tack

RosenkvistMedlem sedan feb. 201214 inlägg
#16

dum fråga kanske...kan jag ersätta <td> med <p>??

voigtann1Medlem sedan juni 20019 519 inlägg
#17

Ja, det skall du kunna nog, men du få plocka bort <tr> elementet + formatera din HTML på ett korrekt sätt, du kör xhtml då skall alla attribut vara med små bokstäver dvs onSubmit är fel det skall vara onsubmit

dina input fält skall stängas:
<input /> INTE <input>

dvs om du nu vill+måste validera din HTML kod.

RosenkvistMedlem sedan feb. 201214 inlägg
#18

Fattar inte var jag ska stänga <input>....Och ja..jag vill helst att sidan ska validera...

Koden ser ut som pannkaka...

</script>

<form action ="mailto:din@email.se" method ="post" enctype="text/plain" onsubmit ="return kollaformularet (this);">

<p> Förnamn:</p>
<input type ="text" name ="fornamn"><input/>
<p> Efternamn:</p>
<input type= "text" name = "efternamn"><input /><br>
<p> Adress:</p>
<input type="text" name="adress"><input />
<p> Postnummer:</p>
<input type ="text" name ="postnummer" maxlength =5><input />
<p> Postadress:</p>
<input type ="text" name = "postadress"<input />
<p> Telefon:</p>
<input type="text" name ="telefon"<input />

<p> <td>E-mail:</p>
<input type="text" size=18 name="emailcheck"><input />

<p><input type ="submit" value = "Sänd">
<input type ="reset" value = "Radera"></p><input />

</form>
</body>

</html>

voigtann1Medlem sedan juni 20019 519 inlägg
#19

Du stänger input element som:

<input type ="text" name ="fornamn">

skalll vara:

<input type ="text" name="fornamn" />

jag skrev <input> => <input/> som ett exempel för att inte behöva skriva om all din kod.

Och du har <td> vid e-mail sen har du två </head> i ditt HTML dokument, vilket är felaktigt.

RosenkvistMedlem sedan feb. 201214 inlägg
#20

tack så mycket för din hjälp! Ska kolla på detta under kvällen. :-)

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