Access repeater checkboxes via javascript getElementByID

My repeater is creating checkboxes, but it gives them a real long id, like
createWidgetControl_sharedUserControl_Repeater1__ctl1_chkRead

Is there a way to access these via javascript without hard coding that string?

The reason I ask is because I have a user control which is included in many pages and therefore the ID's of the checkboxes change depending on where it is included.

thanks in advance.
LVL 9
Rodney HelsensAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
chisholmdConnect With a Mentor Commented:
Sure, If they are the only checkbox elements on the page you could do something like:

for(i=0;i<document.all.length;i++){
   if(document.all[i].type=='checkbox'){
           //do something
   }
}

What do you need to do with the checkboxes with your client side code?




0
 
Rodney HelsensAuthor Commented:
chisholmd,
thanks for the response.

The challenge is, I would like to emulate the 'select all/deselect' all type functionality BUT on a per row basis.

So the repeater would have 5 columns with a checkbox in each, and also have a button or control that when clicked, would select/deselect all checkboxes on that row using javascript.

I have the code to do it, but as I said in my original comment, asp.net assigns an ID to the checkboxes and I am not sure how to deal with that.

thanks.

 
0
 
Rodney HelsensAuthor Commented:
chisholmd,
I used your suggestion with some modification and got it working, thanks for jarring my brain!

function toggleCheckBoxes(isChecked, val)
{
var re = '_sharedAccessControl_Repeater1__ctl' + val + '_chk';
for(i = 0; i < document.all.length; i++)
   {
   elm = document.all[i];
   if (elm.type=='checkbox')
      {
      if (elm.id.indexOf(re) >= 0)
         {
         elm.checked = isChecked
         }
      }
   }
}
0
 
chisholmdCommented:
Great!, If you only wanted to do one row then I assume the select/deselect all is contained in that row, maybe at the end. If so you could pass "this" from the button/link. Then from that reference you could walk up the DOM to the table row and loop through only that row looking for checkboxes.

function selectDeselectRow(btn_el){
      var td = btn_el.parent
      var tr = td.parent
       for(i=0;i<tr.all.length;i++){
             //if a checkbox is checked uncheck else check
       }
}

Or something like that but cross browser compatible :)
0
 
Rodney HelsensAuthor Commented:
Yeah, thanks I'll try that
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.