/    Sign up×
Community /Pin to ProfileBookmark

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.

[B]Javascript [/B]

<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]]: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:tttttnn’+s)}
document.MM_returnValue = (s==”);

}

//–>
</script>

[B]Form statement[/B]

<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”>

[B]HTML for checkboxes[/B]

<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>

to post a comment
JavaScript

4 Comments(s)

Copy linkTweet thisAlerts:
@holyhttpOct 12.2012 — 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.
Copy linkTweet thisAlerts:
@gmgenovaauthorOct 12.2012 — 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'

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

[/B]
,'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">
Copy linkTweet thisAlerts:
@holyhttpOct 12.2012 — 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;

}
Copy linkTweet thisAlerts:
@gmgenovaauthorOct 12.2012 — 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'
×

Success!

Help @gmgenova spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 5.28,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @AriseFacilitySolutions09,
tipped: article
amount: 1000 SATS,

tipper: @Yussuf4331,
tipped: article
amount: 1000 SATS,

tipper: @darkwebsites540,
tipped: article
amount: 10 SATS,
)...