Установите все флажки и сохраните все выбранные элементы в глобальной переменной - PullRequest
1 голос
/ 08 марта 2012

У меня есть список писем, рядом с которым стоит флажок, и пользователь сможет выбрать, на какой адрес он / она хочет отправить электронное письмо. Теперь я добавил еще один флажок, который при включении будет проверять все остальные флажки. Ниже приведен код, который я написал (конечно, с помощью stackoverflow):

<SCRIPT LANGUAGE="JavaScript">

function selectFunction (checkall,field)
{
    if(checkall.checked==true){
        for (i = 0; i < field.length; i++)
            field[i].checked = true ;
    }else{
        for (i = 0; i < field.length; i++)
            field[i].checked = false ;
    }
}

</script>

<form name="myform" action="profile-invite.html" method="post">
    <b>Your Favorite Scripts & Languages</b><br>
    <input type="checkbox" name="list" value="1">aaa@xxx.com<br>
    <input type="checkbox" name="list" value="2">bbb@xxx.com<br>
    <input type="checkbox" name="list" value="3">ccc@xxx.com<br>
    <input type="checkbox" name="list" value="4">ddd@xxx.com<br>
    <input type="checkbox" name="list" value="5">eee@xxx.com<br>

    <input type="checkbox" name="selectallcb" value="Check All"
    onClick="selectFunction(document.myform.selectallcb,document.myform.list)">
    <input type="submit" name="formSubmit" value="Submit" />

</form>

Функция «выбрать все» работает нормально, но, используя print_r, я увидел, что при нажатии кнопки «Отправить» переданное значение является последним флажком, который я выбрал. Например, если я нажму 5-3-1-2, значение в $ _POST будет равно «2», а не остальным.

Я понял, что мой код может зарегистрировать только ОДИН выбранный флажок, поэтому учитывается только последний. Поэтому я переписал код, добавив [] за именем флажка:

<form name="myform" action="profile-invite.html" method="post">
    <b>Your Favorite Scripts & Languages</b><br>
    <input type="checkbox" name="list[]" value="1">aaa@xxx.com<br>
    <input type="checkbox" name="list[]" value="2">bbb@xxx.com<br>
    <input type="checkbox" name="list[]" value="3">ccc@xxx.com<br>
    <input type="checkbox" name="list[]" value="4">ddd@xxx.com<br>
    <input type="checkbox" name="list[]" value="5">eee@xxx.com<br>

    <input type="checkbox" name="selectallcb" value="Check All"
    onClick="selectFunction(document.myform.selectallcb,document.myform.list)">
    <input type="submit" name="formSubmit" value="Submit" />

</form>

Теперь он регистрирует множественные выборы, когда я проверял с print_r. (Если я нажму 5-3-1-2, значение в $ _POST теперь будет [0] => 5, [1] => 3, [ 2] => 1, [3] => 2.)

Но флажок «выбрать все» больше не работает. Я предполагаю, что это связано с [], который преобразовал поле в массив. Я пробовал различные методы (заменив «document.myform.list» на «document.myform.list []» и т. Д.) Пока ни один из них не работает, я продолжу экспериментировать, но если у кого-то есть четкое представление о том, как объединить 2 кода выше, пожалуйста, помогите.

Спасибо

1 Ответ

1 голос
/ 08 марта 2012

Измените это:

onClick="selectFunction(document.myform.selectallcb,document.myform.list)"

на это:

onClick="selectFunction(document.myform.selectallcb,document.myform['list[]'])"

Вот скрипка: http://jsfiddle.net/NxfH6/

...