Gå til innhold

javascript komplikasjoner, trenger hjelp !


Anbefalte innlegg

Jeg har alltid brukt dette scriptet når jeg skal poste en form til et nytt vindu med definert størrelse.

<form enctype="multipart/form-data" action="data.php" method="POST" target="window" onsubmit="window.open('about:blank','window','width=1024','height=600')">

 

Men det krasjer med et annet valideringsscript jeg bruker til formen. Vinduet åpner i definert størrelse når jeg fjerner dette scriptet.

<script language="JavaScript" type="text/javascript">

var frmvalidator = new Validator("data");

  // Validering for utfylling av template form

frmvalidator.addValidation("head","req","Vennligst legg inn et navn på visningen");

frmvalidator.addValidation("interval","req","Vennligst legg inn antall sekunder visningen skal vises");

frmvalidator.addValidation("interval","numeric");

</script>

 

Noen som kan se hva problemet er ?

 

Her er .js filen jeg includerer i header.

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[Nåværende lengde = " + 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[Nåværende lengde = " + 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+": Må inneholde tall ";

                }//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+": Skriv inn en gyldig e-post adresse ";

                }//if                                             

                alert(strError);

                return false;

              }//if

          break;

          }//case email

        case "lt":

        case "lessthan":

        {

            if(isNaN(objValue.value))

            {

              alert(objValue.name+": Må være et nummer ");

              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+": Må være et nummer ");

              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+": Vennligst velg et av valgene ";

              }//if                                                             

              alert(strError);

              return false;                                 

            }

            break;

        }//case dontselect

    }//switch

    return true;

}

Lenke til kommentar
Videoannonse
Annonse

Jeg orker ikke å feilsøke så enormt mange linjer med kode, og tviler på at så veldig mange andre gidder det heller...

Test skriptet i Mozilla Firefox, der får du en bedre forklaring på hva som er galt med skriptet enn i f. eks. IE.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...