dcsimg
www.webdeveloper.com
Results 1 to 5 of 5

Thread: Validate checkboxes in a form - yaromat

Hybrid View

  1. #1
    Join Date
    Oct 2012
    Posts
    5

    Validate checkboxes in a form - yaromat

    Good morning. I am a complete newbie so if I am putting this in the wrong place please let me know. I am not a web developer. I have been asked to work on a web form at work and I am struggling through it.

    I did the form in html.....that was not hard. Now I am doing validation on some of the fields with a javascript example that I got from a former co-worker. I am just tweaking it to make it work with my form. I have all the fields validated successfully except for the checkboxes. My current co-worker is going to take the info and send it in an e-mail using .asp. He told me to name all the checkbox fields the same thing to make his part easier. The problem is my validation method does not like duplicate names so this is not working. There are probably other ways to validate but I would like to stay with this method if possible since it works for all the other fields and since I am very green at this stuff.

    I have included all my pertinent code below. Any help is appreciated.




    Javascript




    <script language="JavaScript" type="text/JavaScript">
    <!--

    function MM_findObj(n, d) { //v4.01
    var p,i,x;
    if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p); }

    if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);

    if(!x && d.getElementById) x=d.getElementById(n); return x;
    }

    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]];
    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 statement




    <form action="SAR Form_Confirm.asp" method="post" name="form1"
    onSubmit="YY_checkform('form1','Submitted By:','#q','0','Submitter name is required'
    ,'Date:','#q','0','You must enter a date'
    ,'Date:','^\([0-9]{2}\)\/\([0-9]{2}\)\/\([0-9]{4}\)$#2#1#3','3','Date is required in MM/DD/YYYY format'
    ,'Cost Center:','#q','1','Select what cost center you are from'
    ,'Activity Type','#q','1','Select at least one activity'
    ,'Customer Name(s):','#q','1','Enter the customer name(s)'
    ,'Account Number(s):','#q','0','Enter the customer account number(s)'
    ,'Detailed Description of Suspicious Activity','2','1','Enter a description of the suspicious activity'
    ,'Describe Customer Identification Documents','2','1','Describe the customer identification documents');return document.MM_returnValue">







    HTML for checkboxes



    <tr><td><br><input type="checkbox" name="Activity Type" value="Bank Secrecy Act/Structuring/Money Laundering"> Bank Secrecy Act/Structuring/Money Laundering</td>
    <td><br><input type="checkbox" name="Activity Type" value="Elder Financial Exploitation"> Elder Financial Exploitation</td></tr>

    <tr><td> <input type="checkbox" name="Activity Type" value="Bribery/Gratuity"> Bribery/Gratuity</td>
    <td><input type="checkbox" name="Activity Type" value="Embezzlement"> Embezzlement</td></tr>

    <tr><td> <input type="checkbox" name="Activity Type" value="Check Fraud"> Check Fraud</td>
    <td><input type="checkbox" name="Activity Type" value="False Statement"> False Statement</td></tr>

    <tr><td> <input type="checkbox" name="Activity Type" value="Check Kiting"> Check Kiting</td>
    <td><input type="checkbox" name="Activity Type" value="Misuse of Position/Self Dealing"> Misuse of Position/Self Dealing</td></tr>

    <tr><td> <input type="checkbox" name="Activity Type" value="Commercial Loan Fraud"> Commercial Loan Fraud</td>
    <td><input type="checkbox" name="Activity Type" value="Mortgage Loan Fraud"> Mortgage Loan Fraud</td></tr>

    <tr><td> <input type="checkbox" name="Activity Type" value="Computer Intrusion"> Computer Intrusion</td>
    <td><input type="checkbox" name="Activity Type" value="Phishing Scam"> Phishing Scam</td></tr>

    <tr><td> <input type="checkbox" name="Activity Type" value="Consumer Loan Fraud"> Consumer Loan Fraud</td>
    <td><input type="checkbox" name="Activity Type" value="Wire Transfer Fraud"> Wire Transfer Fraud</td></tr>

    <tr><td> <input type="checkbox" name="Activity Type" value="Counterfeit Check"> Counterfeit Check</td>
    <td><input type="checkbox" name="Activity Type" value="Terrorist Financing"> Terrorist Financing</td></tr>

    <tr><td> <input type="checkbox" name="Activity Type" value="Counterfeit Credit/Debit Card"> Counterfeit Credit/Debit Card</td>
    <td><input type="checkbox" name="Activity Type" value="Unauthorized Online access"> Unauthorized Online access</td></tr>

    <tr><td> <input type="checkbox" name="Activity Type" value="Counterfeit Instrument (other)"> Counterfeit Instrument (other)</td>
    <td><input type="checkbox" name="Activity Type" value="Identity Theft"> Identity Theft</td></tr>

    <tr><td> <input type="checkbox" name="Activity Type" value="Credit Card Fraud"> Credit Card Fraud</td>
    <td><input type="checkbox" name="Activity Type" value="OFAC Match"> OFAC Match</td></tr>

    <tr><td> <input type="checkbox" name="Activity Type" value="Debit Card Fraud"> Debit Card Fraud</td>
    <td><input type="checkbox" name="Activity Type" value="Other"> Other</td></tr>

  2. #2
    Join Date
    Nov 2006
    Location
    Oakland
    Posts
    500
    Just because your colleague wants you to make his job easier does not mean you shouldn't write your HTML properly.
    How about add an index to each check box such as:
    <input type="checkbox" name="ActivityType0" value="Bank Secrecy Act/Structuring/Money Laundering">
    <input type="checkbox" name="ActivityType1" value="Elder Financial Exploitation">

    What if a user selected more than one box?

    You can also use an array, if you really must use the same name for all checkbox fields.
    <input type="checkbox" name="ActivityType[]" value="Bank Secrecy Act/Structuring/Money Laundering">
    <input type="checkbox" name="ActivityType[]" value="Elder Financial Exploitation">

    Notice, how I took out the blank space in the field's name.
    It's a good habit to embrace because otherwise they are not valid JavaScript variables.

    Your colleague can easily generate that form on the server-side.

  3. #3
    Join Date
    Oct 2012
    Posts
    5

    Array

    I put the [] down where I am naming my checkboxes but it still did not work. name="ActivityType[]"

    How should my posting part look? This is what it looks like now.
    Thank you!!!

    <form action="SAR Form_Confirm.asp" method="post" name="form1"
    onSubmit="YY_checkform('form1','Submitted By:','#q','0','Submitter name is required'
    ,'Date:','#q','0','You must enter a date'
    ,'Date:','^\([0-9]{2}\)\/\([0-9]{2}\)\/\([0-9]{4}\)$#2#1#3','3','Date is required in MM/DD/YYYY format'
    ,'Cost Center:','#q','1','Select what cost center you are from'
    ,'ActivityType[]','#q','1','Select at least one activity'
    ,'Customer Name(s):','#q','1','Enter the customer name(s)'
    ,'Account Number(s):','#q','0','Enter the customer account number(s)'
    ,'Detailed Description of Suspicious Activity','2','1','Enter a description of the suspicious activity'
    ,'Describe Customer Identification Documents','2','1','Describe the customer identification documents');return document.MM_returnValue">

  4. #4
    Join Date
    Nov 2006
    Location
    Oakland
    Posts
    500
    Do keep in mind when you are dealing with an array, then each element can be accessed through its index.
    In your validation you need to loop through the array ActivityType to find out if at least one of the checkbox is ticked.

    if(o.type=="checkbox"){
    var onechecked=false;
    for(var i=0; i<o.length;i++){
    if(o[i].checked) {onechecked = true;break;}
    }
    if(!onechecked) err=true;
    }

  5. #5
    Join Date
    Oct 2012
    Posts
    5
    Ok. I put that loop in but it is still not validating.

    Is this line right in my 'form' statement? I am thinking it needs changed but I do not know what to change it to.

    ,'ActivityType[]','#q','0','Select at least one activity'

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

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



Recent Articles