开发者

Select all Checkboxes in HTML

开发者 https://www.devze.com 2023-01-02 14:14 出处:网络
HI, I have an HTML which has several a list of items with a checkbox (these are placed in a table). Each row in the table has the following coloumn:

HI,

I have an HTML which has several a list of items with a checkbox (these are placed in a table). Each row in the table has the following coloumn:

<input type='checkbox' name='Events[]' value='1'>
<input type='checkbox' name='Events[]' value='2'>
etc

I would like to have make a link names "select all" that when clicked will select all the items.

I am using the following JS, but it is not working.

    function SelectAll(form)
 开发者_如何学C   {
        for(var i in form.Events.childNodes)
            if(form.Events.childNodes[i].type == "checkbox")
                form.Events.childNodes[i].checked = true;
    }


The name of your input is Events[], so form.Events wouldn't find it

Because square brackets don't fit in JavaScript o.p property access shortcut, you would have to use the explicit string-based notation to get them:

var inputs= form.elements['Events[]'];

the form.elements collection (and the form collection itself—form['Events[]']—which is a non-standardised shortcut to the same thing but with more chance of name clashes) is a bit old-school and has some disadvantages like returning a single element instead of a list when there's only one element. You'd probably be better off using getElementsByName:

var inputs= form.getElementsByName('Events[]');

either way, follow up with:

for (var i= inputs.length; i-->0;)
    inputs.checked= true;

Never use for...in to iterate an Array or array-like sequence. It doesn't do what you think at all. Stick to the old-school indexed loop.


Here you go this should work

<input class="Events" type='checkbox' name='Events[]' value='1'>
<input class="Events" type='checkbox' name='Events[]' value='2'>


function SelectAll(form) {
  for (var i = 0; i < form.elements.length; i ++) {
     if (form.elements[i].type == "checkbox" && form.elements[i].className="Events") {
        form.elements[i].checked = true;
     }
  }
)


That will only work for checkboxes that are directly in the <form> tag, and not nested inside any other tags.

The simplest way to do this is to use jQuery:

$(':checkbox', form).attr('checked', true);
0

精彩评论

暂无评论...
验证码 换一张
取 消