Avatar of Jordan Johnson
Jordan Johnson
 asked on

Why is this javascript loop for checking checkbox values not working?

The following form submission function in JavaScript will get the first check box value, but will fail to get others. I have tested this numerous ways, and it seems to always have an issue when getting the ".checked" value for the check box the second time.

Javascript:
function checkForm()
{
  numrows = document.theform.numrows.value;
  if(numrows == -1)
  {
    alert("You do not have any transactions setup yet");
    return false;
  }

  emailcheckcount = 0;
  for(i=0; i<=numrows; i++)
  {
      var recid = document.forms["theform"]["recid"+i].value;
      var checkbox = document.getElementById(recid+"_to"+i);

      if (checkbox.checked)
      {
      emailcheckcount++;

      }
  }

    if(emailcheckcount == 0) {
    alert("Please Select At Least One Email for Alerts");
    return false;
    }

  document.theform.submit();
}

Open in new window


HTML/ASP:

<%
    numrows = -1
    strSQL = "select recid, customer, documenttpid, tolist, cclist, bcclist, receivedvia, addmailout, emailsubject from MailOut where customer like '%"&cname&"%' and (receivedvia = 'email' or addmailout = 'email') and emailsubject <> 'ignore' order by customer, documenttpid;"
    Set rs = objConnection2.Execute(strSQL, ,adCmdText)
    if not (rs.eof and rs.bof) Then

      arr = rs.getrows()
      numrows = ubound(arr,2)
      for i=0 to numrows
        dim tolist
        dim cclist

        recid = arr(0,i)
        customer = arr(1,i)
        documenttpid = arr(2,i)
        if not IsNull(arr(3,i)) Then
          tolist = split(arr(3,i),"|")
        else
          tolist = null
        end if


        if not IsNull(arr(4,i)) and Len(arr(4,i)) > 0 Then
          cclist = split(arr(4,i),"|")
        else
          cclist = null
        end if

        bcclist = arr(5,i)
        receivedvia = arr(6,i)
        addmailout = arr(7,i)
        emailsubject = arr(8,i)


    %>
    <tr>
    <!--
    <td valign='top' style="border-bottom:1px solid black;">&nbsp;<%=customer%></td>
    <td valign='top' style="border-bottom:1px solid black;">&nbsp;<%=receivedvia%></td>
    -->
    <td valign='top' style="border-bottom:1px solid black;">&nbsp;<%=documenttpid%></td>
    <td valign='top' style="border-bottom:1px solid black;">
    <input type="hidden" name="recid<%=i%>" value="<%=recid%>">&nbsp;<%=emailsubject%></td>
    <td valign='top' style="border-bottom:1px solid black;">
    <%
    emailnum = 0
    if not isNULL(tolist) then
        for each email in tolist
          if  not(isNULL(email) or trim(email)="") Then
    %>
      <input type='checkbox' id='<%=recid%>_to<%=emailnum%>' name='<%=recid%>_to<%=emailnum%>'>&nbsp;<%=email%> /<%=recid%>_to<%=emailnum%>
      <input type='hidden' name='<%=recid%>_to<%=emailnum%>email' value='<%=email%>'><BR>
    <%
          end if

          emailnum = emailnum + 1
        next
    end if
    %>
    <input type='hidden' name='numtoemails<%=i%>' value='<%=emailnum%>'>

    <BR>Add Email:<input type='text' name='addtoemail<%=i%>'></td>
    <td valign='top' style="border-bottom:1px solid black;">
    <%
    ccnum = 0
    if(not isNULL(cclist))then
        for each email in cclist
          if trim(email) <> "") = 0 Then
    %>
      <input type='checkbox' name='<%=recid%>_cc<%=ccnum%>'>&nbsp;<%=email%>
      <input type='hidden' name='<%=recid%>_cc<%=ccnum%>email' value='<%=email%>'><BR>
    <%
          end if

          ccnum = ccnum + 1
        next
    end if
    %>
    <input type='hidden' name='numccemails<%=i%>' value='<%=ccnum%>'>

    <BR>Add Email:<input type='text' name='addccemail<%=i%>'></td>
    </tr>
    <%
      next
    end if
    %>

    <input type="hidden" name="numrows" value="<%=numrows%>">

    <tr><td align="Right" colspan="4"><input type="button" value="Submit" style="width:70px;" class="btn-primary" onclick="checkForm();"></td></tr>

Open in new window

JavaScript

Avatar of undefined
Last Comment
Julian Hansen

8/22/2022 - Mon
SOLUTION
Tom Beck

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
ASKER CERTIFIED SOLUTION
Julian Hansen

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
Tom Beck

@julian - You quoted me but misread. "Post data will include each checked checkbox", meaning "not all the checkboxes", just the checked ones.
Julian Hansen

@Tommy (blush) apologies - you are 100% correct missed the 'checked'
Julian Hansen

@Jordon - you have given a B grade on this question without supplying a reason for doing so. Please refer to the EE guidelines on grading.
http://support.experts-exchange.com/customer/portal/articles/481419

By default an A grade is given. Refer to the guidelines for more info
I started with Experts Exchange in 2004 and it's been a mainstay of my professional computing life since. It helped me launch a career as a programmer / Oracle data analyst
William Peck