Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

use brackets in checkbox name when using php and javascript?

i have a form with checkboxes like this:

    <input type="checkbox" name="type[]" value="1" />Fast Food<br>
    <input type="checkbox" name="type[]" value="2" />Table Service<br>
    <input type="checkbox" name="type[]" value="3" />Cafeteria<br>

when i use the brackets in the name (type[]), my php works:

    $type=$_POST['type'];

    echo "types are:";
for ( $counter = 0; $counter < sizeof($type); $counter += 1) {
    echo "<br>".$type[$counter];
}

but my javascript doesn't work:

    var f = document.addform;
    for (var i=0;i<f.type.length;i++){
        if(f.type[i].checked==true){
            break;
        }
        if(i==(f.type.length-1)){
            alert("No categories entered!");
            valid=false;
        }
    }

however, if i take away the brackets:

<input type="checkbox" name="type" value="1" />Fast Food<br>

then the PHP doesn't work but the javascript does.

what's going on here? what should i use?

thanks.

like image 804
vee Avatar asked Jul 08 '10 20:07

vee


2 Answers

PHP has an unusual system for handling multiple form controls with the same name, it expects the names to include [] but it doesn't use them in the variable name.

JavaScript doesn't have that issue. The property will still have the brackets.

Of course, square brackets have special meaning in JS, so you can't use dot notation to access the property.

f['type[]'][i].checked
like image 54
Quentin Avatar answered Oct 20 '22 00:10

Quentin


In javascript, you could use f['type[]'] instead of f.type. It's only php that changes [] to array.

like image 22
Mewp Avatar answered Oct 19 '22 23:10

Mewp