LiveValidation validerar det du fyller i formuläret direkt så du slipper klicka på ”skicka” innan du får veta om du fyllt i allt korrekt. En sådan funktion är väldigt användarvänlig eftersom man slipper sitta och prova sig fram. Så fort någonting blir fel säger den ifrån.

livevalidation formular

Innan vi sätter igång

Ett tips om du inte satt dig in i PHP är att läsa min PHP-guide här på sajten för att förstå vad det är vi gör. Är du lat och bara vill ha ett fungerande mail-formulär finns det att ladda ner längst ner på sidan.

Ladda ner LiveValidation

Här finns det två val; det första är om du redan använder dig av Prototype som LiveValidation är byggt på, då är det prototype-versionen du ska ladda ner. Om inte ska du ladda ner standalone-versionen, vilket är den jag kommer att använda.

Ett tips är även att du väljer den dokumenterade versionen så du kan ändra i koden eftersom meddelandena är på engelska och då är det fritt fram att ändra dem till svenska.

Ladda ner LiveValidation här!

Inkludera LiveValidation i ditt dokument

För att det ska fungera måste du inkludera det i ditt dokument. Detta gör du enkelt genom att skriva i följande innanför head-taggarna:

<script type="text/javascript" src="livevalidation.js"></script>

Detta förutsätter att filen heter livevalidation.js och ligger i samma mapp som ditt dokument.

Skapa formuläret

Formuläret i sig är ingenting avancerat utan helt vanlig HTML-kod. Det viktiga är att vi sätter ut ett id och ett name-värde. Name-värdet är för att php-scriptet ska veta vad fälten innehåller och id-värdet är för att LiveValidation ska kunna identifiera vilket fält som är vilket.

<html>
<head>
<script type="text/javascript" src="livevalidation.js"></script>
</head>
<body>
<form method="post" enctype="multipart/form-data" action="?skicka">

<p>Namn:
</p>

<p>Email:
</p>

<p>Rubrik:
</p>

<p>Meddelande: </p>

<p>Vad är  ?:
</p>

<p>
</p>

</form>
</body>
</html>

Som du ser har jag inte satt ut något fråga på spam-skyddet ännu utan vi väntar med den till sist.

Skicka E-mailet

Som du ser i formuläret är action satt till ?skicka, så när du klickar på submit-knappen vilket gör att vi kan säga åt scriptet att skicka mejlet när ”skicka” är satt. Detta skriver du in ovanför formuläret:

<?PHP
// Detta sker om "skicka" är satt
if(isset($_GET['skicka'])) {

// sätter variablar så man lättare kan se vad som är vad
$minmail = 'dinmejl@mejl.com';
$namn = $_POST['namn'];
$email = $_POST['email'];
$rubrik = $_POST['rubrik'];
$meddelande = $_POST['meddelande'];

mail($minmail,$rubrik,$meddelande, $namn . ' <' .$email . '>');
	echo 'Mailet är skickat!';
};
?>

Dags att börja validiera

Nu när vi har ett fungerande mail-script ska vi sammanfoga det med LiveValidation. Detta kommer enkelt, vi har satt id på varje textfält vilket är det enda vi behöver för att LiveValidation ska fungera med formuläret. Det vi ska göra nu är att lägga till lite javascript innanför head-taggarna. Vi börjar med att se till att alla fält måste fyllas i och att det verkligen är en email-adress de fyller i:

<p>Namn: <input type="text" name="namn" id="namn" /></p>
<script type="text/javascript">
var namn = new LiveValidation('namn');
namn.add( Validate.Presence );
</script>

<p>Email: <input type="text" id="email" name="email" /></p>
<script type="text/javascript">
var email = new LiveValidation('email');
email.add( Validate.Presence );
email.add( Validate.Email );
</script>

<p>Rubrik: <input type="text" id="rubrik" name="rubrik" /></p>
<script type="text/javascript">
var rubrik = new LiveValidation('rubrik');
rubrik.add( Validate.Presence );
</script>

<p>Meddelande: <textarea id="meddelande" name="meddelande"></textarea></p>
<script type="text/javascript">
var meddelande = new LiveValidation('meddelande');
meddelande.add( Validate.Presence );
</script>

<p>Vad är  ?: <input type="text" id="spam" name="spam" /></p>
<script type="text/javascript">
var spam = new LiveValidation('spam');
spam.add( Validate.Presence );
</script>

Spamskyddet

Nu när allting måste fyllas i för att man ska kunna skicka vill vi även ha ett spamskydd som ser till att det är en människa och inte en spambot som skickar mejlet. Till detta ska vi göra ett enkelt php-script som slumpar två tal som man måste addera för att få skicka mejlet- Så nu ändrar du javascriptet under spam-fätet till:

<script type="text/javascript">
var spam = new LiveValidation('spam');
spam.add( Validate.Presence );
spam.add( Validate.Inclusion, { within: [ '<? print $summa; ?>' ] } );
</script>

Du byter även ut frågan till:

<?
$tal1 = rand(1,6);
$tal2 = rand(1,6);
$summa = $tal1 + $tal2;
?>
Vad är <? print $tal1 . ' + ' . $tal2; ?>?

Klart, men fult

Nu har du ett fungerande mejl-script som validerar under tiden du skriver. Eftersom vi inte lagt till någon stil så är det väldigt fult, dessutom har vi inte ändrat meddelandena vilket gör att de kanske inte stämmer med vad vi vill att det ska stå.

I versionen som finns att ladda ner är dock en stilmall inkluderad som fixar till formuläret samt så är meddelandena ändrade att passa detta formulär.

Du kan ladda ner formuläret här.

Du kan testa formuläret här.

Källkoden:

<html>
<head>
<script type="text/javascript" src="livevalidation.js"></script>

</head>
<body>
<?PHP
// Detta sker om "skicka" är satt
if(isset($_GET['skicka'])) {

// sätter variablar så man lättare kan se vad som är vad
$minmail = 'dinmejl@mejl.com';

$namn = $_POST['namn'];
$email = $_POST['email'];
$rubrik = $_POST['rubrik'];
$meddelande = $_POST['meddelande'];

mail($minmail,$rubrik,$meddelande, $namn . ' <' .$email . '>');
	echo 'Mailet är skickat!';
};
?>

<form method="post" enctype="multipart/form-data" action="?skicka">

<p>Namn:
</p>
<script type="text/javascript">
var namn = new LiveValidation('namn');
namn.add( Validate.Presence );

</script>

<p>Email: <input type="text" id="email" name="email" /></p>
<script type="text/javascript">
var email = new LiveValidation('email');
email.add( Validate.Presence );
email.add( Validate.Email );
</script>

<p>Rubrik:
</p>
<script type="text/javascript">
var rubrik = new LiveValidation('rubrik');
rubrik.add( Validate.Presence );
</script>

<p>Meddelande: <textarea id="meddelande" name="meddelande"></textarea></p>
<script type="text/javascript">
var meddelande = new LiveValidation('meddelande');
meddelande.add( Validate.Presence );
</script>

<p><?
$tal1 = rand(1,6);
$tal2 = rand(1,6);
$summa = $tal1 + $tal2;
?>
Vad är <? print $tal1 . ' + ' . $tal2; ?>? <input type="text" id="spam" name="spam" /></p>
<script type="text/javascript">
var spam = new LiveValidation('spam');
spam.add( Validate.Presence );
spam.add( Validate.Inclusion, { within: [ '<? print $summa; ?>' ] } );
</script>

<p><input type="submit" value="skicka" /></p>

</form>
<script type="text/javascript">
var namn = new LiveValidation('namn');
namn.add( Validate.Presence );
</script>
</body>
</html>