использовать скобки на имя флажка при использовании php и JavaScript?

у меня есть форма с флажками как это:

    <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>

когда я использую скобки на имя (тип []), мои работы php:

    $type=$_POST['type'];

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

но мой JavaScript не работает:

    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;
        }
    }

однако, если я устраняю скобки:

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

затем PHP не работает, но JavaScript делает.

что продолжается здесь? что я должен использовать?

спасибо.

6
задан vee 8 July 2010 в 20:01
поделиться

3 ответа

PHP имеет необычную систему обработки нескольких элементов управления формы с одинаковым именем, он ожидает, что имена будут включать [] но не использует их в имени переменной.

В JavaScript такой проблемы нет. Свойство все равно будет содержать скобки.

Конечно, квадратные скобки имеют особое значение в JS, поэтому вы не можете использовать точечную нотацию для доступа к свойству.

f['type[]'][i].checked
9
ответ дан 8 December 2019 в 17:18
поделиться

Конечно, вы также можете поместить «ключ» в квадратные скобки (т. Е. Дать каждому полю фактическое уникальное имя). Что-то вроде «тип [1]», «тип [2]» и «тип [3]». PHP по-прежнему помещает его в массив (с ключами по этим числам), и JS тоже может получить к ним доступ.

2
ответ дан 8 December 2019 в 17:18
поделиться

В javascript вы можете использовать f['type[]'] вместо f.type. Только php меняет [] на массив.

3
ответ дан 8 December 2019 в 17:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: