[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 366
  • Last Modified:

Adapting this javascript to validate multiple checkboxes

I have been using the following to confirm that the user has checked a box before submitting the form. I need to be able to add an additional checkbox and check it the user has selected at least one. any help gratefully received.
<script language="JavaScript" type="text/JavaScript">
<!--
 
function YY_checkform() { //v4.71
//copyright (c)1998,2002 Yaromat.com
  var a=YY_checkform.arguments,oo=true,v='',s='',err=false,r,o,at,o1,t,i,j,ma,rx,cd,cm,cy,dte,at;
  for (i=1; i<a.length;i=i+4){
    if (a[i+1].charAt(0)=='#'){r=true; a[i+1]=a[i+1].substring(1);}else{r=false}
    o=MM_findObj(a[i].replace(/\[\d+\]/ig,""));
    o1=MM_findObj(a[i+1].replace(/\[\d+\]/ig,""));
    v=o.value;t=a[i+2];
    if (o.type=='text'||o.type=='password'||o.type=='hidden'){
      if (r&&v.length==0){err=true}
      if (v.length>0)
      if (t==1){ //fromto
        ma=a[i+1].split('_');if(isNaN(v)||v<ma[0]/1||v > ma[1]/1){err=true}
      } else if (t==2){
        rx=new RegExp("^[\\w\.=-]+@[\\w\\.-]+\\.[a-zA-Z]{2,4}$");if(!rx.test(v))err=true;
      } else if (t==3){ // date
        ma=a[i+1].split("#");at=v.match(ma[0]);
        if(at){
          cd=(at[ma[1]])?at[ma[1]]:1;cm=at[ma[2]]-1;cy=at[ma[3]];
          dte=new Date(cy,cm,cd);
          if(dte.getFullYear()!=cy||dte.getDate()!=cd||dte.getMonth()!=cm){err=true};
        }else{err=true}
      } else if (t==4){ // time
        ma=a[i+1].split("#");at=v.match(ma[0]);if(!at){err=true}
      } else if (t==5){ // check this 2
            if(o1.length)o1=o1[a[i+1].replace(/(.*\[)|(\].*)/ig,"")];
            if(!o1.checked){err=true}
      } else if (t==6){ // the same
            if(v!=MM_findObj(a[i+1]).value){err=true}
      }
    } else
    if (!o.type&&o.length>0&&o[0].type=='radio'){
          at = a[i].match(/(.*)\[(\d+)\].*/i);
          o2=(o.length>1)?o[at[2]]:o;
      if (t==1&&o2&&o2.checked&&o1&&o1.value.length/1==0){err=true}
      if (t==2){
        oo=false;
        for(j=0;j<o.length;j++){oo=oo||o[j].checked}
        if(!oo){s+='* '+a[i+3]+'\n'}
      }
    } else if (o.type=='checkbox'){
      if((t==1&&o.checked==false)||(t==2&&o.checked&&o1&&o1.value.length/1==0)){err=true}
    } else if (o.type=='select-one'||o.type=='select-multiple'){
      if(t==1&&o.selectedIndex/1==0){err=true}
    }else if (o.type=='textarea'){
      if(v.length<a[i+1]){err=true}
    }
    if (err){s+='* '+a[i+3]+'\n'; err=false}
  }
  if (s!=''){alert('The required information is incomplete or contains errors:\t\t\t\t\t\n\n'+s)}
  document.MM_returnValue = (s=='');
}
//-->
</script>
 
 
 
 
<form action="" method="post" enctype="multipart/form-data" name="form1">
    <input type="checkbox" name="checkbox" value="1">
    <input name="Submit" type="submit" onClick="YY_checkform('form1','checkbox','#q','1','Field \'checkbox\' is not valid.');return document.MM_returnValue" value="Submit">
</form>

Open in new window

0
tomandrews
Asked:
tomandrews
  • 2
  • 2
1 Solution
 
Pawel WitkowskiSenior Javascript DeveloperCommented:
Eh... obfuscated code ? Cant you give us original one ?:(
0
 
tomandrewsAuthor Commented:
Ah. didn't ever realist that!
shows how hot my javascript is!
can you think of a good alternative?
0
 
Pawel WitkowskiSenior Javascript DeveloperCommented:
This will submit if there is at least one checkbox selected in list :)
<script type="text/javascript">
 
function checkCheckboxes(el)
{
   var elements = el.form.getElementsByTagName('input');
   var checked = false;
   for (var i=0,j=elements.length;i<j;i++)
   {
   
      if (elements[i].type.toUpperCase()=="CHECKBOX")
	  {
	      if (elements[i].checked) checked = true;
	  }
   }
 
   if (checked) el.form.submit();
}
</script>
 
<form action="" method="post" enctype="multipart/form-data" name="form1">
    <input type="checkbox" name="checkbox" value="1"
    <input type="checkbox" name="checkbox2" value="1">
    <input type="checkbox" name="checkbox3" value="1">
    <input name="Submit" type="submit" onClick="checkCheckboxes(this);return false;" value="Submit">
</form>

Open in new window

0
 
tomandrewsAuthor Commented:
thanks very much for your help
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now