Как передать массив флажков с формы на страницу результатов - PullRequest
0 голосов
/ 03 октября 2010

Я пытаюсь создать страницу, которая позволит пользователю выбрать максимум 8 из 20 флажков в определенном порядке в одной форме.

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

Что мне нужно знать, как только они установят флажки, как я могу не только передать их на тестовую страницу для просмотра данных, но также и как передать данные, показывающие точную последовательность того, как флажки были отмечены .

Пример. Флажки пронумерованы один из двадцати. Если они выбирают checkbox1, checkbox4, checkbox2, checkbox7 и т. Д., Я хочу, чтобы данные передавались в проверенном порядке, 1,4,2,7 и т. Д.

Пока у меня есть готовая форма, я хотел бы знать, что мне нужно добавить в javascript, чтобы передать переменные точно так, как проверено.

Вот Javascript:

<script type="text/javascript">
<!--

//initial checkCount of zero 
var checkCount=0

//maximum number of allowed checked boxes 
var maxChecks=3

function setChecks(obj){ 
//increment/decrement checkCount 
if(obj.checked){ 
checkCount=checkCount+1 
}else{ 
checkCount=checkCount-1 
}

//if they checked a 4th box, uncheck the box, then decrement checkcount and pop alert 
if (checkCount>maxChecks){ 
obj.checked=false 
checkCount=checkCount-1 
alert('you may only choose up to '+maxChecks+' options') 
}

}

//--> 
</script>



<script type="text/javascript">
<!--
$(document).ready(function () { 
    var array = []; 
    $('input[name="checkbox"]').click(function () { 
        if ($(this).attr('checked')) { 
            // Add the new element if checked: 
            array.push($(this).attr('value')); 
        } 
        else { 
            // Remove the element if unchecked: 
            for (var i = 0; i < array.length; i++) { 
                if (array[i] == $(this).attr('value')) { 
                    array.splice(i, 1); 
                } 
            } 
        } 
        // Clear all labels: 
        $("label").each(function (i, elem) { 
            $(elem).html(""); 
        }); 
        // Check the array and update labels. 
        for (var i = 0; i < array.length; i++) { 
            if (i == 0) { 
                $("#" + array[i].toUpperCase()).html("1"); 
            } 
            if (i == 1) { 
                $("#" + array[i].toUpperCase()).html("2"); 
            }
            if (i == 2) { 
                $("#" + array[i].toUpperCase()).html("3"); 
            } 
            if (i == 3) { 
                $("#" + array[i].toUpperCase()).html("4"); 
            } 
            if (i == 4) { 
                $("#" + array[i].toUpperCase()).html("5"); 
            } 
            if (i == 5) { 
                $("#" + array[i].toUpperCase()).html("6"); 
            } 
            if (i == 6) { 
                $("#" + array[i].toUpperCase()).html("7"); 
            } 
            if (i == 7) { 
                $("#" + array[i].toUpperCase()).html("8"); 
            }  
        } 
    }); 
});
//-->
</script>

Вот пример полей ввода:

    <td width="20" align="center" valign="middle"><label id="1"></label><input name="checkbox" type="checkbox" value="1" onclick="setChecks(this)"/></td>
    <td width="20" align="center" valign="middle"><label id="2"></label><input name="checkbox" type="checkbox" value="2" onclick="setChecks(this)"/></td>
    <td width="20" align="center" valign="middle"><label id="3"></label><input name="checkbox" type="checkbox" value="3" onclick="setChecks(this)"/></td>
    <td width="20" align="center" valign="middle"><label id="4"></label><input name="checkbox" type="checkbox" value="4" onclick="setChecks(this)"/></td>
    <td width="20" align="center" valign="middle"><label id="5"></label><input name="checkbox" type="checkbox" value="5" onclick="setChecks(this)"/></td>

and so on up to 20

Я - нуби, и я собрал то, что у меня есть, из разных источников.

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

Буду признателен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 03 октября 2010

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

Полный код в jsFiddle

Установите / снимите флажок, затем щелкните текстовую область, чтобы увидеть ваш массив.

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

Затем вы можете проверить длину, используя arrayName.length, если она соответствует вашим условиям, вы можете отправить.

0 голосов
/ 03 октября 2010

Просто вставьте идентификаторы флажков в массив, затем преобразуйте это в строку и отправьте обратно. Массив [0] будет первым и т. Д. Если Array.length> 7, отключите другие флажки, которые не в массиве. Это должно быть достаточно просто.

...