2

I have a list of dynamically created checkboxes named "tags" which I loop through with javascript to make sure only 1 is checked and to get the value. If for some reason this list of checkboxes only has 1 item, my script won't look at it. When I alert the tag's length I get undefined.

    var total=[];
    for (var i=0; i < document.form1.tags.length; i++){
        if(document.form1.tags[i].checked==true){
            total.push(document.form1.tags[i].value);
        }
    }

    if(total.length==0){
        alert("Please select a product to edit.");
    }else if (total.length>1){
        alert("Please select only one product to edit.");
    }else{
        document.location = "go somewhere";
    }
2
  • 2
    .tags is not an array when there is only one checkbox, it contains direct reference to the one checkbox. It only becomes a nodelist when there are more than one checkboxes with the same name. You should always look at the developer console and you would have seen the error there. Commented Nov 8, 2012 at 22:14
  • @Esailija Yet another reason to use querySelectorAll or jQuery. Commented Nov 8, 2012 at 22:16

4 Answers 4

4

Why do you need Checkboxes? Wouldn't this be a great opportunity to use Radiobuttons?

Sign up to request clarification or add additional context in comments.

Comments

2

Two suggestions:

  1. use getElementsByName instead to get all the elements so you can iterate them:

  2. Use a framework like jquery. Any reason you can't use jquery or another framework? Your life would be so much easier.

var tags = document.getElementsByName('tags');
for(var i = 0; i < tags.length; ++i)
{
    if(tags[i].checked) .....
}

Comments

2

You want radio buttons.

<input type='radio' name='tags' value='[whatever]' />

You won't have to 'check and make sure only one is selected'. And to get the

var tags = document.getElementsByName('tags'),
    value = '', i = 0;

for( ; i < tags.length; i++ )
{
    if( tags[i].checked ) {
        value = tags[i].value;
        break;
    }
}

1 Comment

Can't use radio buttons. Depending on what button is pressed multiple selections is allowed.
-1

from the top of my head... if there is only one checkbox selected it might be document.form1.tags is not an array...

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.