# Numeric Validation JavaScript

## Series I : Validation (<span class="caps">AJAX</span> Presentation <span class="caps">CWP</span>)

Several people have asked me to discuss some of the details from the <span class="caps">AJAX</span> presentation from our last Campus Web Publishers (<span class="caps">CWP</span>) meeting.

In this article, which is part of the <span class="caps">AJAX</span> presentation series, I will share some validation functions I have used to validate the grid. In addition to validating the field, notice how it maps the arrows keys to give the user a Microsoft Excel like feel.

**Validating a numeric field**

```
function NumbersOnly(Object) {	if(CurrentCellClicked) {		if((event.shiftKey && event.keyCode == 9) || event.keyCode==37) {			event.returnValue=true;			return ;		}		else if(event.keyCode==9 || event.keyCode==39) {			event.returnValue=true;			return ;		}	}	if(event.keyCode == 36 || event.keyCode == 35 || event.keyCode == 46 || event.keyCode == 8) event.returnValue=true;	else if((event.shiftKey && event.keyCode == 9) || event.keyCode==37) {		var t = parseInt(Object.nextField);		if(t > 2) {			t = GlobalForm['c'+(t-2)];			if(t.disabled) {				GlobalForm['c'+(t.nextField-2)].select();				GlobalForm['c'+(t.nextField-2)].focus();			}			else {				t.select();				t.focus();			}			event.returnValue = false;		}	}	else if(event.shiftKey) event.returnValue = false;	else if(event.keyCode==9 || event.keyCode==39) {		var t = GlobalForm['c'+Object.nextField];		if(t.disabled) {			GlobalForm['c'+t.nextField].select();			GlobalForm['c'+t.nextField].focus();		}		else {			t.select();			t.focus();		}		event.returnValue = false;	}	else {		event.returnValue = ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode>=96 && event.keyCode<=105));	}}
```

**Validating a currency field**

```
<br></br>function CurrencyOnly(Object) {<br></br>	if(CurrentCellClicked) {<br></br>		if((event.shiftKey && event.keyCode == 9) || event.keyCode==37) {<br></br>			event.returnValue=true;<br></br>			return ;<br></br>		}<br></br>		else if(event.keyCode9 || event.keyCode39) {<br></br>			event.returnValue=true;<br></br>			return ;<br></br>		}<br></br>	}<p>if(event.keyCode == 36 || event.keyCode == 35 || event.keyCode == 46 || event.keyCode == 8) event.returnValue=true;<br></br>	else if((event.shiftKey && event.keyCode == 9) || event.keyCode37) {		var t = parseInt(Object.nextField);		if(t > 2) {			t = GlobalForm['c'+(t-2)];			if(t.disabled) {				GlobalForm['c'+(t.nextField-2)].select();				GlobalForm['c'+(t.nextField-2)].focus();			}			else {				t.select();				t.focus();			}			event.returnValue = false;		}	}	else if(event.shiftKey) event.returnValue = false;	else if(event.keyCode9 || event.keyCode==39) {<br></br>		var t = GlobalForm[’c’+Object.nextField];<br></br>		if(t.disabled) {<br></br>			GlobalForm[’c’+t.nextField].select();<br></br>			GlobalForm[’c’+t.nextField].focus();<br></br>		}<br></br>		else {<br></br>			t.select();<br></br>			t.focus();<br></br>		}<br></br>		event.returnValue = false;<br></br>	}<br></br>	else {<br></br>		event.returnValue = (event.keyCode == 110 || event.keyCode == 190 || event.keyCode == 109 || event.keyCode == 189 || (event.keyCode != 47 && ((event.keyCode>=45 && event.keyCode<=57) || (event.keyCode>=96 && event.keyCode<=105))));<br></br>	}<br></br>}<br></br></p>
```

**Validating a Date Field**

```
<br></br>function DateOnly(Object) {<br></br>	if(CurrentCellClicked) {<br></br>		if((event.shiftKey && event.keyCode == 9) || event.keyCode==37) {<br></br>			event.returnValue=true;<br></br>			return ;<br></br>		}<br></br>		else if(event.keyCode9 || event.keyCode39) {<br></br>			event.returnValue=true;<br></br>			return ;<br></br>		}<br></br>	}<p>if(event.keyCode == 36 || event.keyCode == 35 || event.keyCode == 46 || event.keyCode == 8) event.returnValue=true;<br></br>	else if((event.shiftKey && event.keyCode == 9) || event.keyCode37) {		var t = parseInt(Object.nextField);		if(t > 2) {			t = GlobalForm['c'+(t-2)];			if(t.disabled) {				GlobalForm['c'+(t.nextField-2)].select();				GlobalForm['c'+(t.nextField-2)].focus();			}			else {				t.select();				t.focus();			}			event.returnValue = false;		}	}	else if(event.keyCode9 || event.keyCode==39) {<br></br>		var t = GlobalForm[’c’+Object.nextField];<br></br>		if(t.disabled) {<br></br>			GlobalForm[’c’+t.nextField].select();<br></br>			GlobalForm[’c’+t.nextField].focus();<br></br>		}<br></br>		else {<br></br>			t.select();<br></br>			t.focus();<br></br>		}<br></br>		event.returnValue = false;<br></br>	}<br></br>	else {<br></br>		event.returnValue = (event.keyCode == 109 || event.keyCode == 189 || event.keyCode == 191 || event.keyCode == 111 || (event.keyCode>=47 && event.keyCode<=57) || (event.keyCode>=96 && event.keyCode<=105));<br></br>	}<br></br>}<br></br></p>
```

**Of course, date validation also requires:**

```
<br></br>function IsDate(DateObject) {<br></br>	var month, year, day;<br></br>	if(DateObject.value.length < 6) {<br></br>		var datePat = /^(\d{1,2})(\/|-)(\d{1,2})$/;<br></br>		var matchArray = DateObject.value.match(datePat); // is the format ok?<br></br>		if (matchArray == null) <br></br>			return false;<p>month = matchArray<sup class="footnote"><a href="#fn1">1</a></sup>; // parse date into variables<br></br>		day = matchArray<sup class="footnote"><a href="#fn3">3</a></sup>;<br></br>		year = (new Date()).getFullYear();		<br></br>	}<br></br>	else {<br></br>		var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{2,4})$/;<br></br>		var matchArray = DateObject.value.match(datePat); // is the format ok?<br></br>		if (matchArray == null) <br></br>			return false;</p><p>month = matchArray<sup class="footnote"><a href="#fn1">1</a></sup>; // parse date into variables<br></br>		day = matchArray<sup class="footnote"><a href="#fn3">3</a></sup>;<br></br>		year = matchArray<sup class="footnote"><a href="#fn5">5</a></sup>;<br></br>	}</p><p>if (month < 1 || month > 12) { // check month range<br></br>		throw (new Exception(“Month must be between 1 and 12.”));<br></br>	}<br></br>	if (day < 1 || day > 31) {<br></br>		throw (new Exception(“Day must be between 1 and 31.”));<br></br>	}<br></br>	if ((month4 || month6 || month9 || month11) && day==31) {<br></br>		throw (new Exception("Month “<ins>month</ins>” doesn’t have 31 days"));<br></br>	}<br></br>	if (month == 2) { // check for february 29th<br></br>		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));<br></br>		if (day > 29 || (day==29 && !isleap)) {<br></br>			throw (new Exception("February " + year + " doesn’t have " + day + " days!"));<br></br>		}<br></br>	}<br></br>	if(year.toString().length>2) {<br></br>		year = year = year.toString().substring(2);<br></br>	}<br></br>	DateObject.value = (parseInt(month)) + ‘/’ + (parseInt(day)) + ‘/’ + year;<br></br>	return true; // date is valid<br></br>}<br></br></p>
```