Отправка выбранных флажков (с помощью функции jquery select all) не возвращает массив? - PullRequest
0 голосов
/ 04 декабря 2011

Я пытаюсь проверить все флажки с:

<script type="text/javascript">
    $(document).ready(function()
    {
        $("#delmsg_all").click(function()               
        {
            var checked_status = this.checked;
            $("input[(name=delmsg[])]").each(function()
            {
                this.checked = checked_status;
            });
        });                 
    });

</script>

Все флажки отмечены. часть формы:

<input type="checkbox" name="delmsg[]" value="<?php echo $aRows['pvID'];?>"/>

Пока все хорошо, но .....

Я ожидаю массив со всеми проверенными значениями, но я не получу массив обратно?

код для проверки того, что отправлено моей формой:

## Berichten verwijderen
// test op eigen berichten??
if(isset($_POST['todo']) AND $_POST['todo'] == 'verwijder_mijn_berichten')
{
    if(is_array($_POST['delmsg']))
        $aMeldingen[] = 'yessss';// shows text in jquery lightbox
    else
        $aErrors[] = 'test?'; // just used as testvalue
    foreach($_POST['delmsg'] AS $key => $value)
    {
        $aMeldingen[] = $key.' => '.$value;
        echo $key.' => '.$value;
    }

}

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

когда я использую delmsg [] в качестве имени моих флажков, функция jquery НЕ проверяет все флажки, но массив распознается хорошо. (после того, как я выбрал несколько флажков вручную)

Где это не так с моими мыслями?

Заранее спасибо за любую помощь!

1 Ответ

2 голосов
/ 04 декабря 2011

Немного проблематично использовать скобки в атрибуте имени. jQuery selector engine использует его для других целей, поэтому он не распознает его напрямую. Вы должны избежать этого дважды, как \\[\\]. ( Из документации jQuery ) Вы можете получить свои флажки следующим образом: $("input[name=delmsg\\[\\]]")

Если это не важно, вы можете назначить один и тот же класс своим флажкам, а затем выбрать их с именем класса;

HTML / PHP

<input type="checkbox" name="delmsg[]" class="delmsg" value="<?php echo $aRows['pvID'];?>"/>

Javascript

$(document).ready(function()
{
    $("#delmsg_all").click(function()               
    {
        $(".delmsg").prop('checked', this.checked);
    });                 
});

Кстати, если вы не будете делать что-то еще в итерации each, вы можете установить свойство selected только одной командой; .prop()

Если вы не хотите использовать дополнительный класс, вы можете установить флажки с помощью :checkbox selector.

$(document).ready(function()
{
    $("#delmsg_all").click(function()               
    {
        $(":checkbox").prop('checked', this.checked);
    });                 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...