JavaScript Form Validation Helper
Javascript form validation helper:
**
* @package public
* @subpackage lib
* @author shay anderson 10.09
* @desc rules allowed:
* alpha() - letters only
* alphanumeric() - letters & numbers only
* decimal() - decimal
* min(int number) - minimum characters
* max(int number) - maximum characters
* numeric() - strict integer (no decimal)
* @example
* // validation(string form, string output_div)
* var v=new validation('form_example','errors');
* // apply field
* // add(string field, string message, string message_div)
* v.add('example_field','The example field is required');
* // apply field & rule
* v.add('example_field','Example field requires a minimum of 2 characters');
* v.min(2); // apply rule
*/
function validation(form, output_div) {
if(!form || typeof form!='string') {
return;
} // if
this.form=eval('document.'+form);
if(typeof this.form!='object') {
return;
} // if
var parts=new Array(); // form parts
var form=this.form; // obj
var silent=false; // alert|div output - default alert
var out_div=output_div?eval('document.getElementById(\''+output_div+'\')'):false;
var msg_alert='Please correct the following error(s):\n';
var msg_sof='- ';
var msg_eof='\n';
var msg_eof_silent='
';
this.alertStart=function(str) { msg_alert=str; };
this.alertLineStart=function(str) { msg_sof=str; };
this.alertLineEnd=function(str) { msg_eof=str; };
this.lineEnd=function(str) { msg_eof_silent=str; };
this.submission=function() {
var valid=true;
var chars='abcdefghijklmnopqrstuvwxyz '; // allow whitespace
var nums='0123456789';
function isInteger(value) { return value==parseInt(value); } // isInteger
function isFloat(value) { return value==parseFloat(value); } // isFloat
function isAlpha(value) {
value=value.toLowerCase();
for(var i=0;i
return false;
} // if
} // for
return true;
} // isAlpha
function isAlphanumeric(value) {
value=value.toLowerCase();
for(var i=0;i
return false;
} // if
} // for
return true;
} // isAlphanumeric
msg_alert=silent?'':msg_alert;
msg_sof=silent?'':msg_sof;
msg_eof=silent?msg_eof_silent:msg_eof;
function msg(msg) {
if(msg) {
valid=false; // set to invalid
} // if
return msg_sof+msg+msg_eof;
} // formatMsg
var output=msg_alert;
var ln='';
var invoke_rule=false;
var do_alert=false;
if(typeof parts=='object' && parts.length>0) {
for(k in parts) {
var part=parts[k];
var field=eval('document.'+form.id+'.'+part.id);
if(typeof field!='object') { // ignore
continue;
} // if
// trigger rules
if(typeof part.rule.min=='number') { // min characters
invoke_rule=true;
if(part.rule.min>0 && field.value.length
} // if
} // if
if(typeof part.rule.max=='number') { // max characters
invoke_rule=true;
if(part.rule.max>0 && field.value.length>part.rule.max) { // trigger error
ln=msg(part.msg);
} // if
} // if
if(typeof part.rule.numeric=='boolean') { // numeric - no decimal
invoke_rule=true;
if(!isInteger(field.value)) {
ln=msg(part.msg);
} // if
} // if
if(typeof part.rule.decimal=='boolean') { // decimal
invoke_rule=true;
if(!isFloat(field.value)) {
ln=msg(part.msg);
} // if
} // if
if(typeof part.rule.alpha=='boolean') { // alpha
invoke_rule=true;
if(!isAlpha(field.value)) {
ln=msg(part.msg);
} // if
} // if
if(typeof part.rule.alphanumeric=='boolean') { // alphanumeric
invoke_rule=true;
if(!isAlphanumeric(field.value)) {
ln=msg(part.msg);
} // if
} // if
if(!invoke_rule) { // require field only
if(field.value=='' || field.value=='undefined') {
ln=msg(part.msg);
} // if
} // if
var div=part.div?eval('document.getElementById(\''+part.div+'\')'):'';
if(typeof out_div!='object') { // do not output if output div
if(typeof div=='object' && typeof div.innerHTML!='undefined') { // div message
if(!div.innerHTML) { // do not overwrite message
div.innerHTML=ln;
} // if
} // if
} // if
output+=ln; // add message
if(ln) {
do_alert=true;
} // if
ln=''; // reset
invoke_rule=false; // reset
} // for
if(!silent && do_alert) { // output
alert(output);
} else if(typeof out_div=='object' && typeof out_div.innerHTML!='undefined') { // output div
out_div.innerHTML=output;
} // if
} // if
return valid;
}; // submission
this.form.onsubmit=this.submission; // submit event
this.part=function(parts) {
this.id=parts[0];
this.msg=parts[1];
this.div=parts[2];
this.rule=new Object();
if(this.div) { // div output do not alert
silent=true;
} // if
}; // part
this.id=0;
this.add=function(field, message, message_div) {
this.rule_id=0; // reset
var part=new this.part(new Array(field,message,message_div));
if(!part.id || typeof part.id!='string') {
return;
} // if
if(!part.msg || typeof part.msg!='string') {
return;
} // if
parts[this.id]=part;
this.id++;
}; // add
this.partId=function() { return this.id-1; }; // on next part, rewind
this.partExists=function(id) {
return typeof parts[id?id:this.partId()]=='object'?true:false;
}; // partsExists
this.applyRule=function(type, rule, value) { // type=number|boolean|string
if(eval('typeof value!=\''+type+'\'' || !this.partExists())) {
return;
} // if
eval('parts['+this.partId()+'].rule.'+rule+'='+value);
}; // applyRule
this.min=function(num) { this.applyRule('number','min',num); }; // min
this.max=function(num) { this.applyRule('number','max',num); }; // max
this.numeric=function() { this.applyRule('boolean','numeric',true); }; // numeric
this.decimal=function() { this.applyRule('boolean','decimal',true); }; // decimal
this.alpha=function() { this.applyRule('boolean','alpha',true); }; // alpha
this.alphanumeric=function() { this.applyRule('boolean','alphanumeric',true); }; // alphanumeric
} // validation
Loop Through Array
var vals={
v1:33,
v2:29,
v3:55,
v4:'zz'
} // vals
for(var val in vals) {
alert(val+'='+vals[val]);
} // for
Navigation Tree
function toggle(item) {
obj=document.getElementById(item);
if(obj) {
visible=(obj.style.display!="none")
key=document.getElementById("x" + item);
if (visible) {
obj.style.display="none";
//key.innerHTML="";
} else {
obj.style.display="block";
// key.innerHTML="";
} // if
} // if
} // toggle
function expand() {
divs=document.getElementsByTagName("DIV");
for (i=0;i
key=document.getElementById("x" + divs[i].id);
//key.innerHTML="";
} // for
} // expand
function collapse() {
divs=document.getElementsByTagName("DIV");
for (i=0;i
key=document.getElementById("x" + divs[i].id);
//key.innerHTML="";
} // for
} // toggle
Programmatically Remove HTML
var d = document.getElementsByTagName('div');
for (var i = 0; i < d.length; i++){
if((d[i].id).substring(0, 6) == 'right_') {
document.getElementById(d[i].id).innerHTML = '';
} // if
} // for
