 Källkoden för /anders.enges/asp/testtype.asp
 Källkoden för /anders.enges/asp/testtype.asp 
<!--#include file="../inc/navstuff.asp" -->
<SCRIPT  LANGUAGE="JavaScript">
<!--
function MyIsInteger(value)
{
     	var localVal;
     	localVal = parseInt(value);
     	if (isNaN(localVal))
     	{
          		return false;
     	}
     	else
     	{
          		if (localVal.toString() != value)
               			return false;
          		else
               			return true;
     	}
}
function MyIsDouble(value)
{
     	var localVal;
     	localVal = value;
     	arrayOfStrings = value.split(",")
     	if (arrayOfStrings.length > 2 )
          		return false;
     	if (arrayOfStrings.length == 2 )
          		localVal = arrayOfStrings[0] + "." + arrayOfStrings[1];
     	localVal = parseFloat(localVal);
     	if (isNaN(localVal))
     	{
          		return false;
     	}
     	else
     	{
          		if (localVal.toString() != localVal)
               			return false;
          		else
               			return true;
     	}
}
function MyIsTime(value)
{
     	avals = value.split(":");
     	if (avals.length == 1 )
          		return false;
     	if (parseInt(avals[0]) > 24)
          		return false;
     	if (parseInt(avals[1]) > 60)
          		return false;
     	return true;
}
function MyIsDate(value)
{
     	var localVal;
     	localYear = new Date();
     	localDate = new Date();
     	avals = value.split(".");
     	if (avals.length == 1 )
          		return false;
     	if (avals.length == 2 )	
     	{
          		localDate.setYear(localYear.getYear());
          		localDate.setMonth(parseInt(avals[1])-1);
          		localDate.setDate(parseInt(avals[0]));
     	}
     	else
     	{
          		if (avals.length == 3 )	
          		{
               			localDate.setYear(parseInt(avals[2]));
               			localDate.setMonth(parseInt(avals[1])-1);
               			localDate.setDate(parseInt(avals[0]));
          		}
          		else
          		{
               			return false;
          		}
     	}
     	if (isNaN(localDate))
     	{
          		return false;
     	}
     	else
     	{
          		if (avals.length == 2)
          		{
               			if (localDate.getMonth()+1 != parseInt(avals[1]))
               			{
                    				return false;
               			}
               			if (localDate.getDate() != parseInt(avals[0]))
               			{
                    				return false;
               			}
          		}
          		else
          		{
               			if (localDate.getMonth()+1 != parseInt(avals[1]))
               			{
                    				return false;
               			}
               			if (localDate.getDate() != parseInt(avals[0]))
               			{
                    				return false;
               			}
               			if (localDate.getYear() != parseInt(avals[2]))
               			{
                    				if (parseInt("19" + localDate.getYear()) != parseInt(avals[2]))
                         					return false;
               			}
          		}
     	}
     	return true;
}
function testTheFields()
{
     	if (document.TESTAR.INTEGER.value.length == 0)
     	{
          		alert("Heltalet är tomt");
          		return false;
     	}
     	if (!MyIsInteger(document.TESTAR.INTEGER.value))
     	{
          		alert(document.TESTAR.INTEGER.value + "\nÄr inte ett heltal")
          		return false;
     	}
     	if (document.TESTAR.DOUBLE.value.length == 0)
     	{
          		alert("Decimaltalet är tomt");
          		return false;
     	}
     	if (!MyIsDouble(document.TESTAR.DOUBLE.value))
     	{
          		alert(document.TESTAR.DOUBLE.value + "\nÄr inte en siffra")
          		return false;
     	}
     	if (document.TESTAR.DATE.value.length == 0)
     	{
          		alert("Datumet är tomt");
          		return false;
     	}
     	if (!MyIsDate(document.TESTAR.DATE.value))
     	{
          		alert(document.TESTAR.DATE.value + "\nÄr inte ett datum")
          		return false;
     	}
     	if (document.TESTAR.TIME.value.length == 0)
     	{
          		alert("Tiden är tom");
          		return false;
     	}
     	if (!MyIsTime(document.TESTAR.TIME.value))
     	{
          		alert(document.TESTAR.TIME.value + "\nÄr inte en tid")
          		return false;
     	}
     	if (document.TESTAR.TEXT.value.length == 0)
     	{
          		alert("Texten är tom");
          		return false;
     	}
     	return true;
}
// -->
</SCRIPT>
Ett sätt att lösa problemet med felaktigt data vid insättingar och uppdateringar är att 
aldrig någonsin sända iväg datat om det inte är korrekt.<p>
Nedanstående form kräver att man matar in något i alla fält. Värdena 
måste dessutom vara giltiga för den datatyp som krävs.<br>
<form name="TESTAR" ACTION="doSomething.asp" onsubmit="return testTheFields()">
<table>
<tr>
     	<td>Heltal (n)</td>
     	<td><INPUT TYPE="TEXT" NAME="INTEGER" SIZE="30"></td>
</tr>
<tr>
     	<td>Decimaltal (n,n)</td>
     	<td><INPUT TYPE="TEXT" NAME="DOUBLE" SIZE="30"></td>
</tr>
<tr>
     	<td>Datum (dd.mm.yy)</td>
     	<td><INPUT TYPE="TEXT" NAME="DATE" SIZE="30"></td>
</tr>
<tr>
     	<td>Tid (hh:mm)</td>
     	<td><INPUT TYPE="TEXT" NAME="TIME" SIZE="30"></td>
</tr>
<tr>
     	<td>TEXT (max 20)</td>
     	<td><INPUT TYPE="TEXT" NAME="TEXT" SIZE="30" MAXLENGTH="20"></td>
</tr>
<tr>
     	<td><INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE="TESTA"></td>
     	<td><INPUT TYPE="RESET" VALUE="TÖM"></td>
</tr>
</table>
</form>
<p>
Formens kod ser ut på följande sätt:<br>
<div class=code>
<form name="<b>TESTAR</b>" <b>ACTION="doSomething.asp"</b> <b>onsubmit="return testTheFields()</b>"><br>
<table><br>
<tr><br>
   <td>Heltal (n)</td><br>
   <td><INPUT TYPE="TEXT" <b>NAME="INTEGER"</b> SIZE="30"></td><br>
</tr><br>
<tr><br>
   <td>Decimaltal (n,n)</td><br>
   <td><INPUT TYPE="TEXT" <b>NAME="DOUBLE"</b> SIZE="30"></td><br>
</tr><br>
<tr><br>
   <td>Datum (dd.mm.yy)</td><br>
   <td><INPUT TYPE="TEXT" <b>NAME="DATE"</b> SIZE="30"></td><br>
</tr><br>
<tr><br>
   <td>Tid (hh:mm)</td><br>
   <td><INPUT TYPE="TEXT" <b>NAME="TIME"</b> SIZE="30"></td><br>
</tr><br>
<tr><br>
   <td>TEXT (max 20)</td><br>
   <FONT COLOR=#006400><!-- MAXLENGTH sätter maxlängd för texten --></font><br>
   <td><INPUT TYPE="TEXT" <b>NAME="TEXT"</b> SIZE="30" <b>MAXLENGTH="20"</b>></td><br>
</tr><br>
<tr><br>
   <td><INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE="TESTA"></td><br>
   <td><INPUT TYPE="RESET" VALUE="TÖM"></td><br>
</tr><br>
</table><br>
</form><br>
</div><p>
Det som är viktigt är att formen har ett namn samt att man fångar upp <b>onsubmit</b> 
händelsen med <b>onsubmit="return testTheFields()</b>.<p>
Detta gör att när submit knappen trycks kommer funktionen <b>testTheFields()</b> att köras och om den
returnerar <b>false</b> kommer inte "submiten" att utföras och datat sänds inte vidare. Först när 
<b>testTheFields()</b> returnerar <b>true</b> kommer sidan <b>doSomething.asp</b> att åberopas<p>
Funktionen <b>testTheFields()</b> ser i sin enklaste form ut på följande sätt.<br> 
(Den kontrollerar bara om det är någonting skrivet i fältet för <b>Heltal</b>)<br>
<div class=code>
<SCRIPT LANGUAGE="JavaScript"><br>
<!--<br>
// funktion för att validera formdatat<br>
function testTheFields()<br>
{<br>
   // TESTAR är namnet på formen<br>
   // INTEGER är namnet på textboxen för heltalet<br>
   // Observera att jämförelser sker med == (två likamed)<br>
   // och att if är en funktion, därav parenteserna<br>
   if (document.TESTAR.INTEGER.value.length == 0)<br>
   {<br>
      // alert visar en messagebox<br>
      alert("Heltalet är tomt");<br>
      // returnera fase för att förhindra submit<br>
      return false;<br>
   }<br>
   // kommer vi hit är allt ok eftersom <br>
   // return false ovan gick bort från funktionen <br>
   // om det var tomt i fältet <br>
   return true;<br>
}<br>
// --><br>
</SCRIPT><br>
</div><p>
För att kontrollera alla textboxar gör man således följande<br>
<div class=code>
<SCRIPT LANGUAGE="JavaScript"><br>
<!--<br>
function testTheFields()<br>
{<br>
   if (document.TESTAR.INTEGER.value.length == 0)<br>
   {<br>
      alert("Heltalet är tomt");<br>
      return false;<br>
   }<br>
   if (document.TESTAR.DOUBLE.value.length == 0)<br>
   {<br>
      alert("Decimaltalet är tomt");<br>
      return false;<br>
   }<br>
   if (document.TESTAR.DATE.value.length == 0)<br>
   {<br>
      alert("Datumet är tomt");<br>
      return false;<br>
   }<br>
   if (document.TESTAR.TIME.value.length == 0)<br>
   {<br>
      alert("Tiden är tom");<br>
      return false;<br>
   }<br>
   if (document.TESTAR.TEXT.value.length == 0)<br>
   {<br>
      alert("Texten är tom");<br>
      return false;<br>
   }<br>
   return true;<br>
}<br>
// --><br>
</SCRIPT><br>
</div><p>
Detta räcker dock inte. Vi måste även kontrollera om det är GILTIGT data i textboxarna<p>
Om ni arbetat lite mer med VB eller Access kanske ni känner till att det finns diverse <b>Is...</b>
funktioner t.ex. IsDate och IsNumeric. Dessa finns inte i JavaScript! (De kanske finns i de 
nyaste versionerna, jag har inte kollat, men det hjälper inte eftersom de flesta använder gamla browsers.)<p>
Vi behöver då skriva egna kontrollfunktioner t.ex. <b>MyIsInteger</b><p>
Nedan kommer några användbara kontrollfunktioner och hur de kan användas.<br>
<div class=code>
<FONT COLOR=#006400><!-- Dessa skulle jag personligen sätta i en skild
<br>Och inkludera för att slippa se skiten --><br></font>
<SCRIPT LANGUAGE="JavaScript"><br>
<!--<br>
function MyIsInteger(value)<br>
{<br>
   var localVal;<br>
   localVal = parseInt(value);<br>
   if (isNaN(localVal))<br>
   {<br>
      return false;<br>
   }<br>
   else<br>
   {<br>
      if (localVal.toString() != value)<br>
         return false;<br>
      else<br>
         return true;<br>
   }<br>
}<br>
<br>
function MyIsDouble(value)<br>
{<br>
   var localVal;<br>
   localVal = value;<br>
   arrayOfStrings = value.split(",")<br>
   if (arrayOfStrings.length > 2 )<br>
      return false;<br>
<br>
   if (arrayOfStrings.length == 2 )<br>
      localVal = arrayOfStrings[0] + "." + arrayOfStrings[1];<br>
<br>
   localVal = parseFloat(localVal);<br>
   if (isNaN(localVal))<br>
   {<br>
      return false;<br>
   }<br>
   else<br>
   {<br>
      if (localVal.toString() != localVal)<br>
         return false;<br>
      else<br>
         return true;<br>
   }<br>
}<br>
function MyIsTime(value)<br>
{<br>
   avals = value.split(":");<br>
   if (avals.length == 1 )<br>
      return false;<br>
   if (parseInt(avals[0]) > 24)<br>
      return false;<br>
   if (parseInt(avals[1]) > 60)<br>
      return false;<br>
   return true;<br>
}<br>
<br>
function MyIsDate(value)<br>
{<br>
   var localVal;<br>
   localYear = new Date();<br>
   localDate = new Date();<br>
<br>
   avals = value.split(".");<br>
   if (avals.length == 1 )<br>
      return false;<br>
   if (avals.length == 2 )   <br>
   {<br>
      localDate.setYear(localYear.getYear());<br>
      localDate.setMonth(parseInt(avals[1])-1);<br>
      localDate.setDate(parseInt(avals[0]));<br>
   }<br>
   else<br>
   {<br>
      if (avals.length == 3 )   <br>
      {<br>
         localDate.setYear(parseInt(avals[2]));<br>
         localDate.setMonth(parseInt(avals[1])-1);<br>
         localDate.setDate(parseInt(avals[0]));<br>
      }<br>
      else<br>
      {<br>
         return false;<br>
      }<br>
   }<br>
   if (isNaN(localDate))<br>
   {<br>
      return false;<br>
   }<br>
   else<br>
   {<br>
      if (avals.length == 2)<br>
      {<br>
         if (localDate.getMonth()+1 != parseInt(avals[1]))<br>
         {<br>
            return false;<br>
         }<br>
         if (localDate.getDate() != parseInt(avals[0]))<br>
         {<br>
            return false;<br>
         }<br>
      }<br>
      else<br>
      {<br>
         if (localDate.getMonth()+1 != parseInt(avals[1]))<br>
         {<br>
            return false;<br>
         }<br>
         if (localDate.getDate() != parseInt(avals[0]))<br>
         {<br>
            return false;<br>
         }<br>
         if (localDate.getYear() != parseInt(avals[2]))<br>
         {<br>
            if (parseInt("19" + localDate.getYear()) != parseInt(avals[2]))<br>
               return false;<br>
         }<br>
      }<br>
   }<br>
   return true;<br>
}<br>
// --><br>
</SCRIPT><br>
<FONT COLOR=#006400><!-- Kontroll funktionerna tog slut--><br></font>
<br>
<SCRIPT LANGUAGE="JavaScript"><br>
function testTheFields()<br>
{<br>
   if (document.TESTAR.INTEGER.value.length == 0)<br>
   {<br>
      alert("Heltalet är tomt");<br>
      return false;<br>
   }<br>
   // ! betyder Not (inte)<br>
   if (!MyIsInteger(document.TESTAR.INTEGER.value))<br>
   {<br>
      alert(document.TESTAR.INTEGER.value + "\nÄr inte ett heltal");<br>
      return false;<br>
   }<br>
   if (document.TESTAR.DOUBLE.value.length == 0)<br>
   {<br>
      alert("Decimaltalet är tomt");<br>
      return false;<br>
   }<br>
   if (!MyIsDouble(document.TESTAR.DOUBLE.value))<br>
   {<br>
      alert(document.TESTAR.DOUBLE.value + "\nÄr inte en siffra");<br>
      return false;<br>
   }<br>
   if (document.TESTAR.DATE.value.length == 0)<br>
   {
      alert("Datumet är tomt");<br>
      return false;<br>
   }<br>
   if (!MyIsDate(document.TESTAR.DATE.value))<br>
   {<br>
      alert(document.TESTAR.DATE.value + "\nÄr inte ett datum");<br>
      return false;<br>
   }<br>
   if (document.TESTAR.TIME.value.length == 0)<br>
   {<br>
      alert("Tiden är tom");<br>
      return false;<br>
   }<br>
   if (!MyIsTime(document.TESTAR.TIME.value))<br>
   {<br>
      alert(document.TESTAR.TIME.value + "\nÄr inte en tid")<br>
      return false;<br>
   }<br>
   if (document.TESTAR.TEXT.value.length == 0)<br>
   {<br>
      alert("Texten är tom");<br>
      return false;<br>
   }<br>
   return true;<br>
}<br>
// -->
</SCRIPT>
</div><p>
<!--#include file="../inc/footer.asp" -->