<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dave Russell &#187; Validation</title>
	<atom:link href="http://daverussell.co.za/wordpress/category/validation/feed/" rel="self" type="application/rss+xml" />
	<link>http://daverussell.co.za/wordpress</link>
	<description>Helping me remember and hopefully helping others at the same time.</description>
	<lastBuildDate>Thu, 14 Apr 2011 07:16:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Using Javascript to validate South African ID Numbers</title>
		<link>http://daverussell.co.za/wordpress/2010/03/02/using-javascript-to-validate-south-african-id-numbers/</link>
		<comments>http://daverussell.co.za/wordpress/2010/03/02/using-javascript-to-validate-south-african-id-numbers/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 13:00:21 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Validation]]></category>
		<category><![CDATA[id number]]></category>

		<guid isPermaLink="false">http://daverussell.co.za/wordpress/?p=171</guid>
		<description><![CDATA[I have just finished a neat little client side ID number validation script that ensures that the ID number passed is: Numeric, is 13 Digits long, has a valid date with the first 6 characters and passes the Luhn algorithm test. function ValidateIDnumber&#40;idnumber&#41; &#123; //1. numeric and 13 digits if &#40;isNaN&#40;idnumber&#41; &#124;&#124; &#40;idnumber.length != 13&#41;&#41; [...]]]></description>
			<content:encoded><![CDATA[<p>I have just finished a neat little client side ID number validation script that ensures that the ID number passed is:</p>
<ul>
<li>Numeric,</li>
<li>is 13 Digits long,</li>
<li>has a valid date with the first 6 characters</li>
<li>and passes the <a title="Luhn Algorithm" href="http://en.wikipedia.org/wiki/Luhn_algorithm" target="_blank">Luhn algorithm</a> test.</li>
</ul>
<div class="codesnip-container" >
<div class="javascript codesnip" style="font-family:monospace;"><span class="kw2">function</span> ValidateIDnumber<span class="br0">&#40;</span>idnumber<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="co1">//1. numeric and 13 digits</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span>isNaN<span class="br0">&#40;</span>idnumber<span class="br0">&#41;</span> <span class="sy0">||</span> <span class="br0">&#40;</span>idnumber.<span class="me1">length</span> <span class="sy0">!=</span> 13<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">return</span> <span class="kw2">false</span><span class="sy0">;</span> <span class="br0">&#125;</span><br />
<span class="co1">//2. first 6 numbers is a valid date</span><br />
<span class="kw2">var</span> tempDate <span class="sy0">=</span> <span class="kw2">new</span> Date<span class="br0">&#40;</span>idnumber.<span class="me1">substring</span><span class="br0">&#40;</span>0<span class="sy0">,</span> 2<span class="br0">&#41;</span><span class="sy0">,</span> idnumber.<span class="me1">substring</span><span class="br0">&#40;</span>2<span class="sy0">,</span> 4<span class="br0">&#41;</span> <span class="sy0">-</span> 1<span class="sy0">,</span> idnumber.<span class="me1">substring</span><span class="br0">&#40;</span>4<span class="sy0">,</span> 6<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="br0">&#40;</span><span class="br0">&#40;</span>tempDate.<span class="me1">getYear</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> idnumber.<span class="me1">substring</span><span class="br0">&#40;</span>0<span class="sy0">,</span> 2<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">&amp;</span>amp<span class="sy0">;&amp;</span>amp<span class="sy0">;</span> <span class="br0">&#40;</span>tempDate.<span class="me1">getMonth</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> idnumber.<span class="me1">substring</span><span class="br0">&#40;</span>2<span class="sy0">,</span> 4<span class="br0">&#41;</span> <span class="sy0">-</span> 1<span class="br0">&#41;</span> <span class="sy0">&amp;</span>amp<span class="sy0">;&amp;</span>amp<span class="sy0">;</span> <span class="br0">&#40;</span>tempDate.<span class="me1">getDate</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> idnumber.<span class="me1">substring</span><span class="br0">&#40;</span>4<span class="sy0">,</span> 6<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">return</span> <span class="kw2">false</span><span class="sy0">;</span> <span class="br0">&#125;</span><br />
<span class="co1">//3. luhn formula</span><br />
<span class="kw2">var</span> tempTotal <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> <span class="kw2">var</span> checkSum <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> <span class="kw2">var</span> multiplier <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span><br />
<span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&amp;</span>lt<span class="sy0">;</span> <span class="nu0">13</span><span class="sy0">;</span> <span class="sy0">++</span>i<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
tempTotal <span class="sy0">=</span> parseInt<span class="br0">&#40;</span>idnumber.<span class="me1">charAt</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">*</span> multiplier<span class="sy0">;</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span>tempTotal <span class="sy0">&amp;</span>gt<span class="sy0">;</span> 9<span class="br0">&#41;</span> <span class="br0">&#123;</span> tempTotal <span class="sy0">=</span> parseInt<span class="br0">&#40;</span>tempTotal.<span class="me1">toString</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">charAt</span><span class="br0">&#40;</span>0<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">+</span> parseInt<span class="br0">&#40;</span>tempTotal.<span class="me1">toString</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">charAt</span><span class="br0">&#40;</span>1<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="br0">&#125;</span><br />
checkSum <span class="sy0">=</span> checkSum <span class="sy0">+</span> tempTotal<span class="sy0">;</span><br />
multiplier <span class="sy0">=</span> <span class="br0">&#40;</span>multiplier <span class="sy0">%</span> 2 <span class="sy0">==</span> 0<span class="br0">&#41;</span> <span class="sy0">?</span> 1 <span class="sy0">:</span> <span class="nu0">2</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>checkSum <span class="sy0">%</span> 10<span class="br0">&#41;</span> <span class="sy0">==</span> 0<span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">return</span> <span class="kw2">true</span> <span class="br0">&#125;</span><span class="sy0">;</span><br />
<span class="kw1">return</span> <span class="kw2">false</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://daverussell.co.za/wordpress/2010/03/02/using-javascript-to-validate-south-african-id-numbers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

