Нужна помощь с использованием jquery для проверки флажков из массива php - PullRequest
2 голосов
/ 09 декабря 2010

У меня есть массив php, который я пытаюсь заставить jQuery проверить эти флажки, но я не могу заставить его работать. Мое имя php массива "toCheck", которое:

Array
(
    [0] => 0
    [1] => 3
    [2] => 4
)

0,3,4 - флажки, которые мне нужно отметить. Вот мои чекбоксы:

<input type="checkbox" name="correct[0]" id="correct" value="0" />
<input type="checkbox" name="correct[1]" id="correct" value="1" />
<input type="checkbox" name="correct[2]" id="correct" value="2" />
<input type="checkbox" name="correct[3]" id="correct" value="3" />
<input type="checkbox" name="correct[4]" id="correct" value="4" />
<input type="checkbox" name="correct[5]" id="correct" value="5" />

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

<?php foreach($toCheck as $checkMe) { ?>
//i'm assuming my jquery goes here but I can't get it working
<?php }; ?>

Заранее спасибо:)

Ответы [ 2 ]

2 голосов
/ 09 декабря 2010

Ваш HTML неверен.id значения должны быть уникальными в документе ( ссылка ).

При этом, игнорируя значения id, вы можете использовать это (живой пример ):

$(':checkbox[name^=correct]').each(function() {
    switch (this.value) {
        case "0":
        case "3":
        case "4":
            this.checked = true;
            break;
     }
});

, который использует селектор подстрок CSS3 (jQuery поддерживает почти все CSS3) в атрибуте name, чтобы выбрать любой флажок с именем, начинающимся с correct, изатем использует jQuery each для их обхода.Затем мы устанавливаем свойство checked для тех, которые имеют желаемое значение value.

. Вы также можете сделать это с более длинным селектором и без цикла ( живой пример ):

$(':checkbox[name^=correct][value=0], :checkbox[name^=correct][value=3], :checkbox[name^=correct][value=4]').attr('checked', true);

Обновление : перечитывая ваш вопрос, похоже, вам может понадобиться сделать это более динамично:

<script type='text/javascript'>
(function() {
    var boxes = $(); // Assumes jQuery 1.4 or higher
<?php foreach($toCheck as $checkMe) { ?>
    echo "boxes.add(':checkbox[name=^=correct][value=" . $toCheck . "]');";
<?php }; ?>
    boxes.attr('checked', true);
})();
</script>

... что приведет к:

<script type='text/javascript'>
(function() {
    var boxes = $(); // Assumes jQuery 1.4 or higher
    boxes.add(':checkbox[name=^=correct][value=0]');
    boxes.add(':checkbox[name=^=correct][value=3]');
    boxes.add(':checkbox[name=^=correct][value=4]');
    boxes.attr('checked', true);
})();
</script>

... который будет отмечать соответствующие поля.Но это будет не очень эффективно (весь этот обход документов), лучше использовать PHP для объединения значений в селектор или switch, как показано выше.

0 голосов
/ 09 декабря 2010

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

См. Отправить HTML-форму с пустыми флажками , чтобы узнать больше.

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