Техника для динамической установки нескольких флажков, смешивания форм JavaScript и PHP - PullRequest
0 голосов
/ 13 февраля 2009

Я новичок в javascript, моя проблема заключается в следующем: у меня есть страница php, которая создает одну форму с несколькими блоками процессов или разделами, каждый с группой флажков

например

<form action='./this.php' method='POST'>
One<br>
<input type='checkbox' name='one[part1]'>a<br>
<input type='checkbox' name='one[part2]'>b<br>
<input type='checkbox' name='one[part3]'>c<br>

<input type='checkbox' name='one[all]'>all<br>
<br>
Two<br>
<input type='checkbox' name='two[part1]'>a<br>
<input type='checkbox' name='two[part2]'>b<br>
<input type='checkbox' name='two[part3]'>c<br>

<input type='checkbox' name='two[all]'>all<br>

<input type='submit'>
</form>

Пример проблемы: я хочу иметь возможность установить флажок два [все] и сделать так, чтобы два [part1], два [part2] и два [part3] все были отмечены.

Если я назову все флажки в группе одинаковыми, значение php post будет отображаться только для одного, поэтому мне нужно оставить разные имена.

Есть ли простой способ сделать это, если не считать динамического (через php) создания отдельных функций onclick для каждого раздела.

Обратите внимание, что не все разделы будут одинаковыми, иногда one.part1 может быть недоступен для проверки, но его информация будет отображаться, а имена флажков будут начинаться с b.

Или, возможно, обходя DOM, чтобы найти все флажки после маркера старта и до проверки всех.

Надеюсь, это достаточно ясно.

Ответы [ 2 ]

2 голосов
/ 13 февраля 2009

Изменена форма, чтобы она была больше похожа на:

<input type='checkbox' name='section[one][]' value='part1'>a<br>
<input type='checkbox' name='section[one][]' value='part2'>b<br>
<input type='checkbox' name='section[one][]' value='part3'>c<br>

<input type='checkbox' name='one[all]' onclick='checkAll(one,this)>all<br>

Функция CheckAll была:

function checkAll(checkid, exby) {
    boxes = document.getElementsByName('section[' + checkid + '][]');
    for (i = 0; i < boxes.length; i++){
        boxes[i].checked = exby.checked? true:false
    }
}

В результате все еще можно задать управляемый массив в php post var с единственным именем.

0 голосов
/ 13 февраля 2009

Вам нужна одна функция javascript onClickAll, которая принимает параметр имени группы. Затем вы можете просмотреть все флажки, возвращаемые getElementsByName, и отметить их как отмеченные / не отмеченные. При обратной передаче вы получите массив значений для флажков с использованием имени группы. Зацикливаясь, вы знаете, что было проверено, а что нет.

Я бы написал пример кода, но с тех пор, как я работал в PHP / Javascript, прошло много времени, и я думаю, что лучше, если кто-то, кто лучше, сделает это. Но то, что я сказал вам, должно быть в этом. Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...