<?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>dingobytes &#187; Javascript</title>
	<atom:link href="http://www.dingobytes.com/tag/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://www.dingobytes.com</link>
	<description>what your nephew can't make you</description>
	<lastBuildDate>Fri, 11 Jun 2010 03:26:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>My JavaScript Tool Kit</title>
		<link>http://www.dingobytes.com/javascript/my-javascript-tool-kit</link>
		<comments>http://www.dingobytes.com/javascript/my-javascript-tool-kit#comments</comments>
		<pubDate>Wed, 04 Mar 2009 00:21:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.dingobytes.com/?p=62</guid>
		<description><![CDATA[I have put together a “tool” kit of sorts to help anyone who is just starting out with scripting with javascript. I used javascript sparingly the first few years that I was scripting web applications and sites and it wasn&#8217;t until the last year that I really became infatuated with the scripting language. My understanding [...]]]></description>
			<content:encoded><![CDATA[<p>I have put together a “tool” kit of sorts to help anyone who is just starting out with scripting with javascript. I used javascript sparingly the first few years that I was scripting web applications and sites and it wasn&#8217;t until the last year that I really became infatuated with the scripting language.</p>
<p>My understanding of javascript has increased as I have scoured google.com looking for functions and frameworks to fulfill my page or project needs, but I still feel there is a lot more to learn. I have decided to create this list to help anyone who might just be starting out and needs some direction.<span id="more-62"></span></p>
<ol>
<li>Pick up a copy of “DOM Scripting: Web Design with JavaScript and the Document Object Model” by Jeremy Keith. This book is not easy enough to understand, but it also reminds new javascript users about graceful degradation. Before using any framework, I used many of the scripts in the book religiously. (find the book at http://www.friendsofed.com/book.html?isbn=9781590595336)</li>
<li>Use good web developer tools. Depending on your browser, make sure you are using web developer tools and checking for errors. Firebug is very popular for Firefox browser, but I still prefer the Web Developer tool bar. Microsoft offers a web developer tool bar for free download as well, but this does not have any javascript debugging included. You will need to enable javascript debugging in the IE browser and I would suggest downloading the Microsoft Debugging tool. (Firefox Web Developer: https://addons.mozilla.org/en-US/firefox/addon/60, Firefox Firebug: https://addons.mozilla.org/en-US/firefox/addon/1843 and Microsoft Script Debugger: http://www.microsoft.com/Downloads/details.aspx?familyid=2F465BE0-94FD-4569-B3C4-DFFDF19CCD99&amp;displaylang=en)</li>
<li>Never depend on javascript. Good mark up will always gracefully degrade so that the end product is accessible and usable.</li>
<li>Use the javascript validator at http://jslint.com. Douglas Crockford knows his javascript and his validator (even though it is strict) will help you write good script.</li>
<li>Once your javascript validates, you can minify your script using one of the many javascript compressor/minification tools available. I have used http://javascriptcompressor.com/ with the Base62 encode and shrink variables checked and it has worked well. Another that I just started using is Closure Compiler found here: http://code.google.com/closure/compiler/</li>
<li>Once you are comfortable with javascript, use a framework to speed development. There are several frameworks available such as Jquery, YUI, Prototype, Dojo, Mootools, etc. Find the framework that best suits your needs and learn to use it.</li>
</ol>
<p>I hope this toolkit will help you create accessible and usable applications. I might add to it as I think of more, but this is a great start (I know I wish I would have had it to start with).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dingobytes.com/javascript/my-javascript-tool-kit/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>showMessage</title>
		<link>http://www.dingobytes.com/tutorial/showmessage</link>
		<comments>http://www.dingobytes.com/tutorial/showmessage#comments</comments>
		<pubDate>Tue, 28 Oct 2008 03:47:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[message]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://www.dingobytes.com/?p=21</guid>
		<description><![CDATA[Having to mess with forms all the time, I was beginning to go crazy tweeking different messages. One for success, one for failure, one for help, etc. I decided to try to combine some css with some javascript to make a nice reusable piece to display my form messages. Here is the fruit of that [...]]]></description>
			<content:encoded><![CDATA[<p>Having to mess with forms all the time, I was beginning to go crazy tweeking different messages. One for success, one for failure, one for help, etc.</p>
<p>I decided to try to combine some css with some javascript to make a nice reusable piece to display my form messages. Here is the fruit of that labor.</p>
<p>The function is going to take three arguments. The first argument is a message and or list of messages. The second is the id of the node you would like to stick the message before. The last argument is a classname.</p>
<p><span id="more-21"></span></p>
<pre class="brush: javascript">
/*global document */
function showMessage(thismessage, location_id, classname) {
//first clear showmessage div
if (document.getElementById(&quot;showmessage&quot;)) {
var clearerror = document.getElementById(&quot;showmessage&quot;);
clearerror.parentNode.removeChild(clearerror);
}
</pre>
<p>The first part of the function will check to see if the div “showmessage” exists. If it does then it will remove it from the document.</p>
<pre class="brush: javascript">
// create an showmessage div
var location = document.getElementById(location_id);
</pre>
<p>We define the location so it can be used later. Below we create a new div and set the id attribute to showmessage. We then can style the div for each instance using the className. After that we create an unordered list.</p>
<p>With the list ready, the messages can then be put into an array. We will split the messages up in this example with a pipe &#8220;|&#8221;.  You can substitute your own delimiter.</p>
<pre class="brush: javascript">
var showmessagediv = document.createElement(&quot;div&quot;);
showmessagediv.setAttribute(&quot;id&quot;, &quot;showmessage&quot;);
showmessagediv.className = classname;
var showmessageul = document.createElement(&quot;ul&quot;);
showmessageul.setAttribute(&quot;id&quot;, classname + &quot;list&quot;);
var showmessage = [];
showmessage = thismessage.split(&quot;|&quot;);
var i;
for (i = 0; i &lt; showmessage.length; i++) {
var showmessageli = document.createElement(&quot;li&quot;);
var showmessagelitxt = document.createTextNode(showmessage[i]);
showmessageli.appendChild(showmessagelitxt);
showmessageul.appendChild(showmessageli);
}
showmessagediv.appendChild(showmessageul);
location.parentNode.insertBefore(showmessagediv, location);
// have to add this to display error until css corrected
}
</pre>
<p>Looping through the array, we create a new list element and insert the message. We append the message to the new list element and then append the list element to the unordered list element. When it is all done then we append the unordered list to the showmessage div. The last step of the function is to insert the new showmessage div right before the location_id.</p>
<p>Attached is the style I used with both the successful messages and the unsuccessfull images.</p>
<pre class="brush: css">
.errormsg {
clear: both;
display: block;
width: 90%;
color: #FFFFFF;
font-weight: bold;
background-color: #FF9D9D;
padding: 9px 10px 6px 40px;
margin: 10px 0;
border: 2px solid #FF0000;
}

.successmsg {
clear: both;
display: block;
width: 90%;
color: #333333;
font-weight: bold;
background-color: #9bc19b;
padding: 9px 10px 6px 40px;
margin: 10px 0;
border: 2px solid #039b03;
}

#errormsglist, #successmsglist {
margin-left: 0;
padding-left: 0;
list-style: none;
}

#errormsglist li, #successmsglist li{
padding-left: 20px;
background-repeat: no-repeat;
background-position: 0;
}

#errormsglist li { background-image: url(/icon/exclamation.png); }

#successmsglist li { background-image: url(/icon/accept.png); }
</pre>
<p>You can modify the CSS and change the class name to what ever you wish. The only think to remember is if you style the list, to append &#8220;list&#8221; to the style.</p>
<p><a href="http://www.dingobytes.com/wp-content/uploads/2008/11/showmessage.js">showMessage.js</a></p>
<p><a href="http://www.dingobytes.com/wp-content/uploads/2008/10/showmessage.css">showMessage.css<br />
</a></p>
<div id="attachment_28" class="wp-caption alignnone" style="width: 26px"><a href="http://www.dingobytes.com/wp-content/uploads/2008/10/exclamation.png"><img class="size-medium wp-image-28" title="exclamation.png" src="http://www.dingobytes.com/wp-content/uploads/2008/10/exclamation.png" alt="exclamation.png" width="16" height="16" /></a><p class="wp-caption-text">exclamation.png</p></div>
<div id="attachment_27" class="wp-caption alignnone" style="width: 26px"><a href="http://www.dingobytes.com/wp-content/uploads/2008/10/accept.png"><img class="size-medium wp-image-27" title="accept.png" src="http://www.dingobytes.com/wp-content/uploads/2008/10/accept.png" alt="accept.png" width="16" height="16" /></a><p class="wp-caption-text">accept.png</p></div>
<p><a href="http://www.dingobytes.com/wp-content/uploads/2008/10/showmessage.css"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dingobytes.com/tutorial/showmessage/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lame Mouse Over Effect</title>
		<link>http://www.dingobytes.com/tutorial/lame-mouse-over-effect</link>
		<comments>http://www.dingobytes.com/tutorial/lame-mouse-over-effect#comments</comments>
		<pubDate>Thu, 03 Apr 2008 07:07:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[effect]]></category>
		<category><![CDATA[mouseover]]></category>

		<guid isPermaLink="false">http://www.dingobytes.com/?p=8</guid>
		<description><![CDATA[So at work today, I wanted to see if I could create a lame mouse over effect to let feel like they were highlighting a listing. I wanted to pop out the moused over listing on the page by putting a thin border around the moused over div and then change the background. I was [...]]]></description>
			<content:encoded><![CDATA[<p>So at work today, I wanted to see if I could create a lame mouse over effect to let feel like they were highlighting a listing.  I wanted to pop out the moused over listing on the page by putting a thin border around the moused over div and then change the background. I was able to create the effect with javascript and coldfusion very easily. Because I don&#8217;t host this site on a coldfusion server, I will just show the javascript with some rendered HTML.</p>
<p><span id="more-8"></span>To save some time, I will explain the javascript and how to call it. You can grab the css from the example page.</p>
<pre id="line149">
<pre class="brush: javascript">
&lt;script type=&quot;text/javascript&quot;&gt;
//&lt;![CDATA[
var listing = {

g:function(id) {
    return document.getElementById(id);
},

// function to change the background and border of listing on mouse over
highlight:function(id) {
    listing_el = listing.g(&quot;listing&quot; + id);
    if(id != 1) { //this is what to do for all divs other then first one
        id_above = id - 1;
        listing_above_el = listing.g(&quot;listing&quot; + id_above);
        listing_above_el.style.border = &quot;#fff 2px solid&quot;; //removes border on result above highlighted
        listing_el.style.backgroundColor = &quot;#fffae7&quot;;
        listing_el.style.border = &quot;#837b97&quot;;
    }
    else {
        listing_el.className = &quot;highlight_el&quot;;
        listing_el.style.backgroundColor = &quot;#fffae7&quot;;
        listing_el.style.border = &quot;#837b97&quot;;
    }
},

normal:function(id) {
    listing_el = listing.g(&quot;listing&quot; + id);
    if(id != 1) {
        id_above = id - 1;
        listing_above_el = listing.g(&quot;listing&quot; + id_above);
        listing_above_el.style.borderBottom = &quot;#cccccc 2px dotted&quot;; //restores border to result above highlighted
	listing_el.style.backgroundColor = &quot;#ffffff&quot;;
	listing_el.style.border = &quot;#ffffff 2px solid&quot;;
        listing_el.style.borderBottom = &quot;#cccccc 2px dotted&quot;;
    }
    else {
        listing_el.className = &quot;normal_el&quot;;
        listing_el.style.backgroundColor = &quot;#ffffff&quot;;
	listing_el.style.border = &quot;#ffffff 2px solid&quot;;
        listing_el.style.borderBottom = &quot;#cccccc 2px dotted&quot;;
    }
}
//]]&gt;
&lt;/script&gt;
</pre>
</pre>
<p>The HTML can be spit through some query or loop and is straight forward.</p>
<p><code>
<pre class="brush: html">
&lt;div id=&quot;listing1&quot; class=&quot;listing&quot; onmouseover=&quot;listing.highlight(&#039;1&#039;);&quot; onmouseout=&quot;listing.normal(&#039;1&#039;);&quot;&gt;
&lt;div id=&quot;listing_top&quot;&gt;
&lt;span class=&quot;left&quot;&gt;
&lt;a href=&quot;javascript:void(0);&quot; title=&quot;121 Initech Rd&quot;&gt;121 Initech Rd&lt;/a&gt;
&lt;/span&gt;
&lt;/div&gt;
&lt;div id=&quot;listing_left&quot;&gt;
&lt;a href=&quot;javascript:void(0);&quot; title=&quot;121 Initech Rd&quot;&gt;&lt;img src=&quot;images/inventory/thumbs/0/0/0/000976.jpg&quot; alt=&quot;121 Initech Rd&quot; class=&quot;displayed&quot; width=&quot;151&quot; /&gt;&lt;/a&gt;
2.00 bed 3.00 bath 1296 sqft&lt;br /&gt;
Lake Home&lt;br /&gt;
Listing: 08-1979
&lt;/div&gt;
&lt;div id=&quot;listing_right&quot;&gt;&lt;span class=&quot;large_price&quot;&gt;$198699&lt;/span&gt; One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into a horrible vermin. He lay on his armour-like back, and if he lifted his head a little he could see his brown belly, slightly domed and divided by arches into stiff sections. The bedding was hardly able to cover it and seemed ready to slide off any moment. His many legs, pitifully thin compared with the size of the rest of him, waved about helplessly as he looked. &quot;What&#039;s happened to me? &quot; he thought. It wasn&#039;t a dream.&lt;/div&gt;
&lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/code&gt;&lt;/code&gt;

&lt;code&gt;&lt;div id=&quot;listing2&quot; class=&quot;listing&quot; onmouseover=&quot;listing.highlight(&#039;2&#039;);&quot; onmouseout=&quot;listing.normal(&#039;2&#039;);&quot;&gt;
&lt;div id=&quot;listing_top&quot;&gt;
&lt;span class=&quot;left&quot;&gt;
&lt;a href=&quot;javascript:void(0);&quot; title=&quot;121 Initech Rd&quot;&gt;121 Initech Rd&lt;/a&gt;
&lt;/span&gt;
&lt;/div&gt;
&lt;div id=&quot;listing_left&quot;&gt;
&lt;a href=&quot;javascript:void(0);&quot; title=&quot;121 Initech Rd&quot;&gt;&lt;img src=&quot;images/inventory/thumbs/0/0/0/000976.jpg&quot; alt=&quot;121 Initech Rd&quot; class=&quot;displayed&quot; width=&quot;151&quot; /&gt;&lt;/a&gt;
2.00 bed 3.00 bath 1296 sqft&lt;br /&gt;
Lake Home&lt;br /&gt;
Listing: 08-1979
&lt;/div&gt;
&lt;div id=&quot;listing_right&quot;&gt;&lt;span class=&quot;large_price&quot;&gt;$198699&lt;/span&gt; His room, a proper human room although a little too small, lay peacefully between its four familiar walls. A collection of textile samples lay spread out on the table - Samsa was a travelling salesman - and above it there hung a picture that he had recently cut out of an illustrated magazine and housed in a nice, gilded frame. It showed a lady fitted out with a fur hat and fur boa who sat upright, raising a heavy fur muff that covered the whole of her lower arm towards the viewer.&lt;/div&gt;
&lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>This can be completed repeated and by dynamically changing the value <em>i</em> you can populate the results so that</p>
<p><code>[sourcecode language='html']<br />
&lt;div id="listing<em>i</em>" class="listing" onmouseover="listing.highlight('<em>i</em>');" onmouseout="listing.normal('<em>i</em>');"&gt;</code></p>
<p>You can see the <a title="finished product" href="http://www.dingobytes.com/example/results.html" target="_blank">finished product here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dingobytes.com/tutorial/lame-mouse-over-effect/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Form Validation II</title>
		<link>http://www.dingobytes.com/tutorial/form-validation-ii</link>
		<comments>http://www.dingobytes.com/tutorial/form-validation-ii#comments</comments>
		<pubDate>Wed, 06 Feb 2008 04:48:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.dingobytes.com/2008/02/05/form-validation-ii/</guid>
		<description><![CDATA[Continuing on from the first part of the tutorial, we are going to continue through the list of form elements in the order we setup. Next we work on the email address. else if(document.getElementById("email").value=='' &#124;&#124; (document.getElementById("email").value!='' &#38;&#38; !emailfilter.test(document.getElementById("email").value))){ document.getElementById("error_msg").childNodes[0].data= 'Please enter a valid e-mail address.'; document.getElementById("error_msg").style.display = "block"; document.getElementById("email").focus(); return false; } Notice how we [...]]]></description>
			<content:encoded><![CDATA[<p>Continuing on from the first part of the tutorial, we are going to continue through the list of form elements in the order we setup. Next we work on the email address.</p>
<p><code><strong><font size="2" color="#0000c0"></p>
<p align="left">else<font size="2"> </font><strong><font size="2" color="#0000c0">if</font></strong><font size="2" color="#5c5c5c">(</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"email"</font><font size="2" color="#5c5c5c">).</font><font size="2">value</font><font size="2" color="#5c5c5c">==</font><font size="2" color="#005c00">''</font><font size="2"> </font><font size="2" color="#5c5c5c">||<br />
(</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"email"</font><font size="2" color="#5c5c5c">).</font><font size="2">value</font><font size="2" color="#5c5c5c">!=</font><font size="2" color="#005c00">''</font><font size="2"> </font><font size="2" color="#5c5c5c">&amp;&amp;<br />
!</font><font size="2">emailfilter</font><font size="2" color="#5c5c5c">.</font><font size="2">test</font><font size="2" color="#5c5c5c">(</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"email"</font><font size="2" color="#5c5c5c">).</font><font size="2">value</font><font size="2" color="#5c5c5c">))){<br />
</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"error_msg"</font><font size="2" color="#5c5c5c">).</font><font size="2">childNodes</font><font size="2" color="#5c5c5c">[</font><font size="2" color="#004080">0</font><font size="2" color="#5c5c5c">].</font><font size="2">data</font><font size="2" color="#5c5c5c">=<br />
</font><font size="2" color="#005c00">'Please enter a valid e-mail address.'</font><font size="2" color="#5c5c5c">;<br />
</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"error_msg"</font><font size="2" color="#5c5c5c">).</font><font size="2">style</font><font size="2" color="#5c5c5c">.</font><font size="2">display </font><font size="2" color="#5c5c5c">=</font><font size="2"> </font><font size="2" color="#005c00">"block"</font><font size="2" color="#5c5c5c">;<br />
</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"email"</font><font size="2" color="#5c5c5c">).</font><font size="2">focus</font><font size="2" color="#5c5c5c">();<br />
</font><strong><font size="2" color="#0000c0">return</font></strong><font size="2"> </font><font size="2" color="#800040">false</font><font size="2" color="#5c5c5c">;<br />
}</font></p>
<p></font></strong></code>Notice how we handle the email value checking first to see if it is empty to trigger an error and then using the logical operator OR (denoted as ||), we then look at another statement. In that statement we use the logical operator AND (denoted as &amp;&amp;) to trigger an error, and if both the email filed is not empty and the emailfilter.test is not valid then we do what is in between the curly brackets again. The contents are the same as what we described in the first statement.</p>
<p><span id="more-3"></span></p>
<p><code><strong><font size="2" color="#0000c0"></p>
<p align="left">else<font size="2"> </font><strong><font size="2" color="#0000c0">if</font></strong><font size="2" color="#5c5c5c">(</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"phone"</font><font size="2" color="#5c5c5c">).</font><font size="2">value</font><font size="2" color="#5c5c5c">!=</font><font size="2" color="#005c00">""</font><font size="2"> </font><font size="2" color="#5c5c5c">&amp;&amp;<br />
!</font><font size="2">phonefilter</font><font size="2" color="#5c5c5c">.</font><font size="2">test</font><font size="2" color="#5c5c5c">(</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"phone"</font><font size="2" color="#5c5c5c">).</font><font size="2">value</font><font size="2" color="#5c5c5c">)){<br />
</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"error_msg"</font><font size="2" color="#5c5c5c">).</font><font size="2">childNodes</font><font size="2" color="#5c5c5c">[</font><font size="2" color="#004080">0</font><font size="2" color="#5c5c5c">].</font><font size="2">data </font><font size="2" color="#5c5c5c">=<br />
</font><font size="2" color="#005c00">"Please enter valid phone number"</font><font size="2" color="#5c5c5c">;<br />
</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"error_msg"</font><font size="2" color="#5c5c5c">).</font><font size="2">style</font><font size="2" color="#5c5c5c">.</font><font size="2">display </font><font size="2" color="#5c5c5c">=</font><font size="2"> </font><font size="2" color="#005c00">"block"</font><font size="2" color="#5c5c5c">;<br />
</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"phone"</font><font size="2" color="#5c5c5c">).</font><font size="2">focus</font><font size="2" color="#5c5c5c">();<br />
</font><strong><font size="2" color="#0000c0">return</font></strong><font size="2"> </font><font size="2" color="#800040">false</font><font size="2" color="#5c5c5c">;<br />
}</font></p>
<p></font></strong></code>The phone is very similar to the email, but nothing is done if no phone number is entered.</p>
<p><code><strong><font size="2" color="#0000c0"></p>
<p align="left">else<font size="2"> </font><strong><font size="2" color="#0000c0">if</font></strong><font size="2" color="#5c5c5c">(</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"subject"</font><font size="2" color="#5c5c5c">).<br />
</font><font size="2">options</font><font size="2" color="#5c5c5c">[</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"subject"</font><font size="2" color="#5c5c5c">).</font><font size="2">selectedIndex</font><font size="2" color="#5c5c5c">].</font><font size="2">value</font><font size="2" color="#5c5c5c">==</font><font size="2" color="#005c00">''</font><font size="2" color="#5c5c5c">){<br />
</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"error_msg"</font><font size="2" color="#5c5c5c">).</font><font size="2">childNodes</font><font size="2" color="#5c5c5c">[</font><font size="2" color="#004080">0</font><font size="2" color="#5c5c5c">].</font><font size="2">data</font><font size="2" color="#5c5c5c">=<br />
</font><font size="2" color="#005c00">'Please choose a subject address.'</font><font size="2" color="#5c5c5c">;<br />
</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"error_msg"</font><font size="2" color="#5c5c5c">).</font><font size="2">style</font><font size="2" color="#5c5c5c">.</font><font size="2">display </font><font size="2" color="#5c5c5c">=</font><font size="2"> </font><font size="2" color="#005c00">"block"</font><font size="2" color="#5c5c5c">;<br />
</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"subject"</font><font size="2" color="#5c5c5c">).</font><font size="2">focus</font><font size="2" color="#5c5c5c">();<br />
</font><strong><font size="2" color="#0000c0">return</font></strong><font size="2"> </font><font size="2" color="#800040">false</font><font size="2" color="#5c5c5c">;<br />
}</font></p>
<p></font></strong></code>The subject is a handled a little differently as it is part of a select element. You will notice that the format in the IF statement changes to read the chosen value. Giving the default a value=&#8221;" allows the application to recognize when no subject is selected.</p>
<p><code><strong><font size="2" color="#0000c0"></p>
<p align="left">else<font size="2"> </font><strong><font size="2" color="#0000c0">if</font></strong><font size="2" color="#5c5c5c">(</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"content"</font><font size="2" color="#5c5c5c">).</font><font size="2">value</font><font size="2" color="#5c5c5c">==</font><font size="2" color="#005c00">''</font><font size="2" color="#5c5c5c">){<br />
</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"error_msg"</font><font size="2" color="#5c5c5c">).</font><font size="2">childNodes</font><font size="2" color="#5c5c5c">[</font><font size="2" color="#004080">0</font><font size="2" color="#5c5c5c">].</font><font size="2">data</font><font size="2" color="#5c5c5c">=</font><font size="2" color="#005c00">'Please be sure to enter comments.'</font><font size="2" color="#5c5c5c">;<br />
</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"error_msg"</font><font size="2" color="#5c5c5c">).</font><font size="2">style</font><font size="2" color="#5c5c5c">.</font><font size="2">display </font><font size="2" color="#5c5c5c">=</font><font size="2"> </font><font size="2" color="#005c00">"block"</font><font size="2" color="#5c5c5c">;<br />
</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"content"</font><font size="2" color="#5c5c5c">).</font><font size="2">focus</font><font size="2" color="#5c5c5c">();<br />
</font><strong><font size="2" color="#0000c0">return</font></strong><font size="2"> </font><font size="2" color="#800040">false</font><font size="2" color="#5c5c5c">;<br />
}</font><strong><font size="2" color="#0000c0">else</font></strong><font size="2"> </font><font size="2" color="#5c5c5c">{</font><font size="2"> </font><strong><font size="2" color="#0000c0">return</font></strong><font size="2"> </font><font size="2" color="#800040">true</font><font size="2" color="#5c5c5c">;</font><font size="2"> </font><font size="2" color="#5c5c5c">}<br />
}<br />
</font><font size="2" color="#008000">//--&gt;<br />
</font><font size="2" color="#0000ff">&lt;/</font><font size="2" color="#a31515">script</font><font size="2" color="#0000ff">&gt;</font></p>
<p></font></strong></p>
<p align="left">The last item for textarea element is similar to what was done for the name element, and that is all followed the last ELSE which will return a true or you can have it point to another function (like we will do for AJAX call in the final example). If set to true, it will just submit the form.</p>
<p></code>So now that the script is done, the only thing left is providing a place to display the error. The div/span can be placed where ever you want the error to be displayed. The error will only be displayed when triggered by the javascript.</p>
<p><code><font size="2" color="#0000ff">&lt;<font size="2" color="#a31515">span</font><font size="2"> </font><font size="2" color="#ff0000">id</font><font size="2">=</font><font size="2" color="#0000ff">"error_msg"</font><font size="2"> </font><font size="2" color="#ff0000">class</font><font size="2">=</font><font size="2" color="#0000ff">"errormssg"&gt;</font><font size="2"> </font><font size="2" color="#0000ff">&lt;/</font><font size="2" color="#a31515">span</font><font size="2" color="#0000ff">&gt;</font></p>
<p></font></code>The trick here is when the id error_message style is defined. The key will be to make the class display none. The javascript will trigger the error to be visible (by changing display:block;) and then the error can be changed back by simply changing the style for id=&#8221;error_msg&#8221; display:block.</p>
<p>So lets take a look at the finished project. You can view and copy the <a href="http://www.dingobytes.com/example/testform.html" title="Example Form">finished product here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dingobytes.com/tutorial/form-validation-ii/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>client side form validation</title>
		<link>http://www.dingobytes.com/tutorial/hello-world</link>
		<comments>http://www.dingobytes.com/tutorial/hello-world#comments</comments>
		<pubDate>Thu, 31 Jan 2008 01:22:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.dingobytes.com/?p=1</guid>
		<description><![CDATA[The more we learn the more fun we have. Take for example the simple process of validating a form. We can save the user a lot of time validating the form on the client side and still do it without those annoying alerts that pop up with a loud DING! It is rather easy with [...]]]></description>
			<content:encoded><![CDATA[<p>The more we learn the more fun we have. Take for example the simple process of validating a form. We can save the user a lot of time validating the form on the client side and still do it without those annoying alerts that pop up with a loud DING! It is rather easy with the help of a little javascript.</p>
<p>Now depending on what type of data you are passing to the server with your form, you will often need to also validate your fields data on the server too. This tutorial will only look at the client side validation, leaving server side validation to another tutorial at some other time.</p>
<p>Lets first start with our form. We are going to do a simple form that just asks for name, email address, optional phone number, a select list for subject and text area for message. Oh, I always forget, we need a submit and clear button too. Lets start it all of with our form tag.</p>
<p><span id="more-1"></span></p>
<p>The form tag <code>&lt;form&gt;</code> will typically have the standard attributes of a method (get or post) and some sort of action. I often use AJAX to process my forms so the action may simply be action=&#8221;#&#8221; or action =&#8221;javascript:void();&#8221;. Knowing that we will be validating this form we are going to add one more attribute to the form element to validate the form when it is submitted and it is obviously called onsubmit. Here is the tag we will be using.</p>
<p><code><font size="2" color="#0000ff"></p>
<p align="left">&lt;<font size="2" color="#a31515">form</font><font size="2"> </font><font size="2" color="#ff0000">action</font><font size="2">=</font><font size="2" color="#0000ff">"javascript:void(0);"</font><font size="2"> </font><font size="2" color="#ff0000">name</font><font size="2">=</font><font size="2" color="#0000ff">"myform"<br />
</font><font size="2" color="#ff0000">onsubmit</font><font size="2">="</font><strong><font size="2" color="#0000c0">return</font></strong><font size="2"> validateForm</font><font size="2" color="#5c5c5c">();</font><font size="2">"</font><font size="2" color="#0000ff">&gt;</font></p>
<p></font></code>If you look what is inside the onsubmit attribute, it is pretty straight forward, we want to return the result of the javascript function we are going to create called validateForm() so that if it is true the form will will submit and if it is false it will not send.</p>
<p>Next we are going to just briefly go over the other form elements. There are several other elements, but for todays tutorial we are only going to use the &lt;input&gt;, &lt;select&gt; and &lt;textarea&gt; elements. The one thing to remember whenever using these elements is they should always have a name and id attribute and the input element should have a type attribute as well. Here is a an example of one of the input elements (for email) and our select and textarea elements.</p>
<p><code><font size="2" color="#0000ff"></p>
<p align="left">&lt;<font size="2" color="#a31515">label</font><font size="2"> </font><font size="2" color="#ff0000">for</font><font size="2">=</font><font size="2" color="#0000ff">"name"&gt;</font><font size="2">Name:</font><font size="2" color="#0000ff">&lt;/</font><font size="2" color="#a31515">label</font><font size="2" color="#0000ff">&gt;<br />
&lt;</font><font size="2" color="#a31515">input</font><font size="2"> </font><font size="2" color="#ff0000">type</font><font size="2">=</font><font size="2" color="#0000ff">"text"</font><font size="2"> </font><font size="2" color="#ff0000">id</font><font size="2">=</font><font size="2" color="#0000ff">"name"</font><font size="2"> </font><font size="2" color="#ff0000">name</font><font size="2">=</font><font size="2" color="#0000ff">"name"</font><font size="2"> </font><font size="2" color="#0000ff">/&gt;<br />
&lt;</font><font size="2" color="#a31515">label</font><font size="2"> </font><font size="2" color="#ff0000">for</font><font size="2">=</font><font size="2" color="#0000ff">"email"&gt;</font><font size="2">Email:</font><font size="2" color="#0000ff">&lt;/</font><font size="2" color="#a31515">label</font><font size="2" color="#0000ff">&gt;<br />
&lt;</font><font size="2" color="#a31515">input</font><font size="2"> </font><font size="2" color="#ff0000">type</font><font size="2">=</font><font size="2" color="#0000ff">"text"</font><font size="2"> </font><font size="2" color="#ff0000">id</font><font size="2">=</font><font size="2" color="#0000ff">"email"</font><font size="2"> </font><font size="2" color="#ff0000">name</font><font size="2">=</font><font size="2" color="#0000ff">"email"</font><font size="2"> </font><font size="2" color="#0000ff">/&gt;<br />
&lt;</font><font size="2" color="#a31515">label</font><font size="2"> </font><font size="2" color="#ff0000">for</font><font size="2">=</font><font size="2" color="#0000ff">"phone"&gt;</font><font size="2">Phone:</font><font size="2" color="#0000ff">&lt;/</font><font size="2" color="#a31515">label</font><font size="2" color="#0000ff">&gt;<br />
&lt;</font><font size="2" color="#a31515">input</font><font size="2"> </font><font size="2" color="#ff0000">type</font><font size="2">=</font><font size="2" color="#0000ff">"text"</font><font size="2"> </font><font size="2" color="#ff0000">id</font><font size="2">=</font><font size="2" color="#0000ff">"phone"</font><font size="2"> </font><font size="2" color="#ff0000">name</font><font size="2">=</font><font size="2" color="#0000ff">"phonel"</font><font size="2"> </font><font size="2" color="#0000ff">/&gt;<br />
&lt;</font><font size="2" color="#a31515">label</font><font size="2"> </font><font size="2" color="#ff0000">for</font><font size="2">=</font><font size="2" color="#0000ff">"subject"&gt;</font><font size="2">Subject:</font><font size="2" color="#0000ff">&lt;/</font><font size="2" color="#a31515">label</font><font size="2" color="#0000ff">&gt;<br />
&lt;</font><font size="2" color="#a31515">select</font><font size="2"> </font><font size="2" color="#ff0000">id</font><font size="2">=</font><font size="2" color="#0000ff">"subject"</font><font size="2"> </font><font size="2" color="#ff0000">name</font><font size="2">=</font><font size="2" color="#0000ff">"subject"&gt;<br />
&lt;</font><font size="2" color="#a31515">option</font><font size="2"> </font><font size="2" color="#ff0000">value</font><font size="2">=</font><font size="2" color="#0000ff">"Advertising Inquiry"&gt;</font><font size="2">Advertising Inquiry</font><font size="2" color="#0000ff">&lt;/</font><font size="2" color="#a31515">option</font><font size="2" color="#0000ff">&gt;<br />
&lt;</font><font size="2" color="#a31515">option</font><font size="2"> </font><font size="2" color="#ff0000">value</font><font size="2">=</font><font size="2" color="#0000ff">"Support Inquiry"&gt;</font><font size="2">Support Inquiry</font><font size="2" color="#0000ff">&lt;/</font><font size="2" color="#a31515">option</font><font size="2" color="#0000ff">&gt;<br />
&lt;</font><font size="2" color="#a31515">option</font><font size="2"> </font><font size="2" color="#ff0000">value</font><font size="2">=</font><font size="2" color="#0000ff">"General Inquiry"&gt;</font><font size="2">General Inquiry</font><font size="2" color="#0000ff">&lt;/</font><font size="2" color="#a31515">option</font><font size="2" color="#0000ff">&gt;<br />
&lt;/</font><font size="2" color="#a31515">select</font><font size="2" color="#0000ff">&gt;<br />
&lt;</font><font size="2" color="#a31515">label</font><font size="2"> </font><font size="2" color="#ff0000">for</font><font size="2">=</font><font size="2" color="#0000ff">"message"&gt;</font><font size="2">Message:</font><font size="2" color="#0000ff">&lt;/</font><font size="2" color="#a31515">label</font><font size="2" color="#0000ff">&gt;<br />
&lt;</font><font size="2" color="#a31515">textarea</font><font size="2"> </font><font size="2" color="#ff0000">id</font><font size="2">=</font><font size="2" color="#0000ff">"message"</font><font size="2"> </font><font size="2" color="#ff0000">name</font><font size="2">=</font><font size="2" color="#0000ff">"message"</font><font size="2"> </font><font size="2" color="#ff0000">rows</font><font size="2">=</font><font size="2" color="#0000ff">""</font><font size="2"> </font><font size="2" color="#ff0000">cols</font><font size="2">=</font><font size="2" color="#0000ff">""&gt;&lt;/</font><font size="2" color="#a31515">textarea</font><font size="2" color="#0000ff">&gt;<br />
&lt;</font><font size="2" color="#a31515">input</font><font size="2"> </font><font size="2" color="#ff0000">type</font><font size="2">=</font><font size="2" color="#0000ff">"submit"</font><font size="2"> </font><font size="2" color="#ff0000">id</font><font size="2">=</font><font size="2" color="#0000ff">"submit"</font><font size="2"> </font><font size="2" color="#ff0000">name</font><font size="2">=</font><font size="2" color="#0000ff">"submit"</font><font size="2"> </font><font size="2" color="#ff0000">value</font><font size="2">=</font><font size="2" color="#0000ff">"Submit"</font><font size="2"> </font><font size="2" color="#0000ff">/&gt;</font></p>
<p></font></p>
<p align="left">Now that the form is created, we can move on to the javascript function to validate the form. You will want to place this javascript before the form in the page. Here is the code, I will explain it as we go through it.</p>
<p></code><code><font size="2" color="#0000ff"></p>
<p align="left">&lt;<font size="2" color="#a31515">script</font><font size="2"> </font><font size="2" color="#ff0000">type</font><font size="2">=</font><font size="2" color="#0000ff">"text/javascript"&gt;<br />
</font><font size="2" color="#008000">&lt;!--//<br />
</font><strong><font size="2" color="#0000c0">function</font></strong><font size="2"> validateForm</font><font size="2" color="#5c5c5c">(){<br />
</font><strong><font size="2" color="#0000c0">var</font></strong><font size="2"> emailfilter </font><font size="2" color="#5c5c5c">=<br />
</font><font size="2" color="#800040">/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/</font><font size="2" color="#5c5c5c">;<br />
</font><strong><font size="2" color="#0000c0">var</font></strong><font size="2"> phonefilter </font><font size="2" color="#5c5c5c">=<br />
</font><font size="2" color="#800040">/\(?\d{3}\)?([-\/\.])\d{3}\1\d{4}/</font><font size="2" color="#5c5c5c">;<br />
</font><strong><font size="2" color="#0000c0">if</font></strong><font size="2" color="#5c5c5c">(</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"name"</font><font size="2" color="#5c5c5c">).</font><font size="2">value</font><font size="2" color="#5c5c5c">==</font><font size="2" color="#005c00">""</font><font size="2" color="#5c5c5c">){<br />
</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"error_msg"</font><font size="2" color="#5c5c5c">).</font><font size="2">childNodes</font><font size="2" color="#5c5c5c">[</font><font size="2" color="#004080">0</font><font size="2" color="#5c5c5c">].</font><font size="2">data </font><font size="2" color="#5c5c5c">=<br />
</font><font size="2" color="#005c00">"Please enter full name"</font><font size="2" color="#5c5c5c">;<br />
</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"error_msg"</font><font size="2" color="#5c5c5c">).</font><font size="2">style</font><font size="2" color="#5c5c5c">.</font><font size="2">display </font><font size="2" color="#5c5c5c">=</font><font size="2"> </font><font size="2" color="#005c00">"block"</font><font size="2" color="#5c5c5c">;<br />
</font><font size="2">document</font><font size="2" color="#5c5c5c">.</font><font size="2">getElementById</font><font size="2" color="#5c5c5c">(</font><font size="2" color="#005c00">"name"</font><font size="2" color="#5c5c5c">).</font><font size="2">focus</font><font size="2" color="#5c5c5c">();<br />
</font><strong><font size="2" color="#0000c0">return</font></strong><font size="2"> </font><font size="2" color="#800040">false</font><font size="2" color="#5c5c5c">;<br />
}</font></p>
<p></font></code>The first thing we did was declare that we were going to use javascript by using the &lt;script&gt; tag. We then defined the function validateForm() which will have no values passed to it and use the curly brackets to hold our statements for the function.</p>
<p>Two regular expressions (regex) are then defined which will be used for validatig the email address and the pone number. I have created these two regex items, but you can find about any regex you could imagine at <a href="http://www.regexlib.com">http://www.regexlib.com</a>.</p>
<p>The next steps are going to be repeated in slightly different ways, so we will discuss them here in a little more detail. The first statement starts with the IF statement where we check to see if what is inside the () is true. If the statement is true it continues to process what is in the curly brackets.</p>
<p>The text on the right hand side of the first statement replaces the childNodes.data of the element with id=&#8221;error_message&#8221;. This is followed by style change of the element, in this example we change display:none to display:block.</p>
<p>To make it less confusing for the user, the next statement focuses the cursor back in the input field with id =&#8221;name&#8221;.  The last item in the IF statement is return false which will stop the form from processing. The IF statement is then closed with the end curly bracket.</p>
<p> To be continued. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dingobytes.com/tutorial/hello-world/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
