потеря переменных из массива javascript при переходе на php - PullRequest
0 голосов
/ 14 апреля 2011

Я пытаюсь реализовать страницу с выбором предпочтений пользователя в форме HTML, где, если установлен флажок ALL , тогда все под-флажки base1 , base2 и base3 проверяются автоматически, и если какой-либо из вспомогательных флажков не установлен, то флажок ALL должен быть снят. Я использовал функцию javascript, которая работает, но когда я отправляю форму, отправляется только последняя переменная в массиве флажков.

<SCRIPT LANGUAGE="JavaScript">       
function checkChoice(field, i) {

if (i == 0) { // "All" checkbox selected.
if(field[0].checked==true) {
for (i = 1; i < field.length; i++)
field[i].checked = true;
   }
}
else  {  
if (field[i].checked == false) {
field[0].checked = false;
      }
   }
}

<form name="form" method = "POST" action="preferences.php">

<input type=checkbox name=classes1 value="allbases" onclick="checkChoice(document.form.classes1, 0)">All bases
</td><td>
<input type=checkbox name=classes1 value="base1" onclick="checkChoice(document.form.classes1, 1)">Base1
<br>
<input type=checkbox name=classes1 value="base2" onclick="checkChoice(document.form.classes1, 2)">Base2
<br>
<input type=checkbox name=classes1 value="base3" onclick="checkChoice(document.form.classes1, 3)">Base3
<input type="submit"  value="Set preferences" >  

Если я вызываю имена флажков в "classes1 []", все значения передаются, но функция javascript больше не работает. Есть ли способ исправить это? Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 14 апреля 2011

Для альтернативы checkChoice: проверьте этот вопрос SO и jsfiddle , которые я там представил.

[ edit ] относительно вашего комментария: немного лишних раздумий привело бы вас к этому решению

0 голосов
/ 14 апреля 2011

Все значения на самом деле отправлены, но PHP будет перезаписывать $ _POST ['classes1'] каждый раз, пока вы просто не останетесь с последним значением.Однако, если вы добавите '[]' к своим входным именам, они будут добавлены в массив.

Поскольку последнее вызывает проблемы с javascript, вы можете не просто а) выполнять итерацию всех элементов формы изМассив form.elements, или b) присвойте каждому входу уникальный идентификатор и используйте document.getElementById (), чтобы найти его?

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