Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 3 of 3
  1. #1
    New to the CF scene
    Join Date
    Dec 2009
    Posts
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts

    gen_validatorv2.js help

    Hi, im new to javascript....

    Wonder if anyone can help me add a custom function to this:

    [CODE]
    /*
    -------------------------------------------------------------------------
    JavaScript Form Validator
    Version 2.0.2
    Copyright 2003 JavaScript-coder.com. All rights reserved.
    You use this script in your Web pages, provided these opening credit
    lines are kept intact.
    The Form validation script is distributed free from JavaScript-Coder.com

    You may please add a link to JavaScript-Coder.com,
    making it easy for others to find this script.
    Checkout the Give a link and Get a link page:
    http://www.javascript-coder.com/links/how-to-link.php

    You may not reprint or redistribute this code without permission from
    JavaScript-Coder.com.

    JavaScript Coder
    It precisely codes what you imagine!
    Grab your copy here:
    http://www.javascript-coder.com/
    -------------------------------------------------------------------------
    */
    function Validator(frmname)
    {
    this.formobj=document.forms[frmname];
    if(!this.formobj)
    {
    alert("BUG: couldnot get Form object "+frmname);
    return;
    }
    if(this.formobj.onsubmit)
    {
    this.formobj.old_onsubmit = this.formobj.onsubmit;
    this.formobj.onsubmit=null;
    }
    else
    {
    this.formobj.old_onsubmit = null;
    }
    this.formobj.onsubmit=form_submit_handler;
    this.addValidation = add_validation;
    this.setAddnlValidationFunction=set_addnl_vfunction;
    this.clearAllValidations = clear_all_validations;
    }
    function set_addnl_vfunction(functionname)
    {
    this.formobj.addnlvalidation = functionname;
    }
    function clear_all_validations()
    {
    for(var itr=0;itr < this.formobj.elements.length;itr++)
    {
    this.formobj.elements[itr].validationset = null;
    }
    }
    function form_submit_handler()
    {
    for(var itr=0;itr < this.elements.length;itr++)
    {
    if(this.elements[itr].validationset &&
    !this.elements[itr].validationset.validate())
    {
    return false;
    }
    }
    if(this.addnlvalidation)
    {
    str =" var ret = "+this.addnlvalidation+"()";
    eval(str);
    if(!ret) return ret;
    }
    return true;
    }
    function add_validation(itemname,descriptor,errstr)
    {
    if(!this.formobj)
    {
    alert("BUG: the form object is not set properly");
    return;
    }//if
    var itemobj = this.formobj[itemname];
    if(!itemobj)
    {
    alert("BUG: Couldnot get the input object named: "+itemname);
    return;
    }
    if(!itemobj.validationset)
    {
    itemobj.validationset = new ValidationSet(itemobj);
    }
    itemobj.validationset.add(descriptor,errstr);
    }
    function ValidationDesc(inputitem,desc,error)
    {
    this.desc=desc;
    this.error=error;
    this.itemobj = inputitem;
    this.validate=vdesc_validate;
    }
    function vdesc_validate()
    {
    if(!V2validateData(this.desc,this.itemobj,this.error))
    {
    this.itemobj.focus();
    return false;
    }
    return true;
    }
    function ValidationSet(inputitem)
    {
    this.vSet=new Array();
    this.add= add_validationdesc;
    this.validate= vset_validate;
    this.itemobj = inputitem;
    }
    function add_validationdesc(desc,error)
    {
    this.vSet[this.vSet.length]=
    new ValidationDesc(this.itemobj,desc,error);
    }
    function vset_validate()
    {
    for(var itr=0;itr<this.vSet.length;itr++)
    {
    if(!this.vSet[itr].validate())
    {
    return false;
    }
    }
    return true;
    }
    function validateEmailv2(email)
    {
    // a very simple email validation checking.
    // you can add more complex email checking if it helps
    if(email.length <= 0)
    {
    return true;
    }
    var splitted = email.match("^(.+)@(.+)$");
    if(splitted == null) return false;
    if(splitted[1] != null )
    {
    var regexp_user=/^\"?[\w-_\.]*\"?$/;
    if(splitted[1].match(regexp_user) == null) return false;
    }
    if(splitted[2] != null)
    {
    var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
    if(splitted[2].match(regexp_domain) == null)
    {
    var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
    if(splitted[2].match(regexp_ip) == null) return false;
    }// if
    return true;
    }
    return false;
    }
    function V2validateData(strValidateStr,objValue,strError)
    {
    var epos = strValidateStr.search("=");
    var command = "";
    var cmdvalue = "";
    if(epos >= 0)
    {
    command = strValidateStr.substring(0,epos);
    cmdvalue = strValidateStr.substr(epos+1);
    }
    else
    {
    command = strValidateStr;
    }
    switch(command)
    {
    case "req":
    case "required":
    {
    if(eval(objValue.value.length) == 0)
    {
    if(!strError || strError.length ==0)
    {
    strError = objValue.name + " : Required Field";
    }//if
    alert(strError);
    return false;
    }//if
    break;
    }//case required
    case "maxlength":
    case "maxlen":
    {
    if(eval(objValue.value.length) > eval(cmdvalue))
    {
    if(!strError || strError.length ==0)
    {
    strError = objValue.name + " : "+cmdvalue+" characters maximum ";
    }//if
    alert(strError + "\n[Current length = " + objValue.value.length + " ]");
    return false;
    }//if
    break;
    }//case maxlen
    case "minlength":
    case "minlen":
    {
    if(eval(objValue.value.length) < eval(cmdvalue))
    {
    if(!strError || strError.length ==0)
    {
    strError = objValue.name + " : " + cmdvalue + " characters minimum ";
    }//if
    alert(strError + "\n[Current length = " + objValue.value.length + " ]");
    return false;
    }//if
    break;
    }//case minlen
    case "alnum":
    case "alphanumeric":
    {
    var charpos = objValue.value.search("[^A-Za-z0-9]");
    if(objValue.value.length > 0 && charpos >= 0)
    {
    if(!strError || strError.length ==0)
    {
    strError = objValue.name+": Only alpha-numeric characters allowed ";
    }//if
    alert(strError + "\n [Error character position " + eval(charpos+1)+"]");
    return false;
    }//if
    break;
    }//case alphanumeric
    case "num":
    case "numeric":
    {
    var charpos = objValue.value.search("[^0-9]");
    if(objValue.value.length > 0 && charpos >= 0)
    {
    if(!strError || strError.length ==0)
    {
    strError = objValue.name+": Only digits allowed ";
    }//if
    alert(strError + "\n [Error character position " + eval(charpos+1)+"]");
    return false;
    }//if
    break;
    }//numeric
    case "alphabetic":
    case "alpha":
    {
    var charpos = objValue.value.search("[^A-Za-z]");
    if(objValue.value.length > 0 && charpos >= 0)
    {
    if(!strError || strError.length ==0)
    {
    strError = objValue.name+": Only alphabetic characters allowed ";
    }//if
    alert(strError + "\n [Error character position " + eval(charpos+1)+"]");
    return false;
    }//if
    break;
    }//alpha
    case "alnumhyphen":
    {
    var charpos = objValue.value.search("[^A-Za-z0-9\-_]");
    if(objValue.value.length > 0 && charpos >= 0)
    {
    if(!strError || strError.length ==0)
    {
    strError = objValue.name+": characters allowed are A-Z,a-z,0-9,- and _";
    }//if
    alert(strError + "\n [Error character position " + eval(charpos+1)+"]");
    return false;
    }//if
    break;
    }
    case "email":
    {
    if(!validateEmailv2(objValue.value))
    {
    if(!strError || strError.length ==0)
    {
    strError = objValue.name+": Enter a valid Email address ";
    }//if
    alert(strError);
    return false;
    }//if
    break;
    }//case email
    case "lt":
    case "lessthan":
    {
    if(isNaN(objValue.value))
    {
    alert(objValue.name+": Should be a number ");
    return false;
    }//if
    if(eval(objValue.value) >= eval(cmdvalue))
    {
    if(!strError || strError.length ==0)
    {
    strError = objValue.name + " : value should be less than "+ cmdvalue;
    }//if
    alert(strError);
    return false;
    }//if
    break;
    }//case lessthan
    case "gt":
    case "greaterthan":
    {
    if(isNaN(objValue.value))
    {
    alert(objValue.name+": Should be a number ");
    return false;
    }//if
    if(eval(objValue.value) <= eval(cmdvalue))
    {
    if(!strError || strError.length ==0)
    {
    strError = objValue.name + " : value should be greater than "+ cmdvalue;
    }//if
    alert(strError);
    return false;
    }//if
    break;
    }//case greaterthan
    case "regexp":
    {
    if(objValue.value.length > 0)
    {
    if(!objValue.value.match(cmdvalue))
    {
    if(!strError || strError.length ==0)
    {
    strError = objValue.name+": Invalid characters found ";
    }//if
    alert(strError);
    return false;
    }//if
    }
    break;
    }//case regexp
    case "dontselect":
    {
    if(objValue.selectedIndex == null)
    {
    alert("BUG: dontselect command for non-select Item");
    return false;
    }
    if(objValue.selectedIndex == eval(cmdvalue))
    {
    if(!strError || strError.length ==0)
    {
    strError = objValue.name+": Please Select one option ";
    }//if
    alert(strError);
    return false;
    }
    break;
    }//case dontselect
    }//switch
    return true;
    }
    /*
    Copyright 2003 JavaScript-coder.com. All rights reserved.
    */
    [ICODE]

    Im wanting to add another function to check to see if the input is ALL lowercase or ALL uppercase eg

    case "lower":

    case "upper":

    I have found this:

    var character = '5';
    if (character == character.toUpperCase()) {
    alert ('upper case true');
    }
    if (character == character.toLowerCase()){
    alert ('lower case true');
    }

    But not sure how to insert/implement it...

    thanks

    Newbie (nathan) ;-)

  • #2
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    27,191
    Thanks
    80
    Thanked 4,562 Times in 4,526 Posts
    That's actually pretty dumb code.

    It goes to all the trouble to find out if strError already exists. Then, if it doesn't it sets it to a value, alert's that same value, and returns false!!

    So what was the point in that????

    No matter what, your poor user has to discover his/her validation errors one at a time. If you are going to do that, then AT LEAST focus on the problem field when you give the error.

    Anyway, to answer your question, *probably* something like this:
    Code:
        case "lower":
            if ( objValue.value.toLowerCase() != objValue.value ) 
            {
              ...
            }
            break;
        case "upper":
            if ( objValue.value.toUpperCase() != objValue.value ) 
            {
              ...
            }
            break;
    But I'd sure be tempted to toss that stuff and rewrite a good validator.
    An optimist sees the glass as half full.
    A pessimist sees the glass as half empty.
    A realist drinks it no matter how much there is.

  • #3
    Supreme Master coder! Philip M's Avatar
    Join Date
    Jun 2002
    Location
    London, England
    Posts
    18,247
    Thanks
    203
    Thanked 2,556 Times in 2,534 Posts
    Quote Originally Posted by Old Pedant View Post
    That's actually pretty dumb code.
    But I'd sure be tempted to toss that stuff and rewrite a good validator.
    Seconded. Terrible stuff.

    Validation of the form if (x=="") or if (x.length==0) is barely worthy of the name, and virtually useless, as even a single space or a ? will return false, that is pass the validation.

    You quote
    Code:
    var character = '5';
    if (character == character.toUpperCase()) {
    alert ('upper case true');
    }
    if (character == character.toLowerCase()){
    alert ('lower case true');
    }
    which does not make sense - the character 5 (numeral) does not have a case, or if you like is both upper and lower case.

    You may find this more useful (test a string, not just a single character):-

    Code:
    var str = "abcd";
    str = str.replace(/[^a-z]/g,"");  // strip non-alpha chars
    if (/^([a-z])*$/g.test(str)) {
    alert ('Lower case true');
    }
    else if (/^([A-Z])*$/g.test(str)) {
    alert ('Upper case true');
    }
    else {
    alert ("String has both upper and lower case letters");
    }
    Last edited by Philip M; 12-03-2009 at 09:09 AM.


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •