Сериализация флажков в JQuery - PullRequest
6 голосов
/ 22 марта 2011

У меня есть форма jQuery, в которой я создаю серию флажков:

<?php
<form method="post" id="b-form" action="../createb.php">
    for ($i=0; $i<$request_count; $i++){
       <div class="request-check">
          <table>
             <tr>
                <td><input type="checkbox" name="show_request[]" value="request".$i."      checked="checked"/>select request</td>
             </tr>
          </table>
        </div>
   }

javascript

$.ajax({
          type: 'POST',
          url: '../createb.php',
          data: $('#b-form').serialize(),
          success: function (msg){
                alert(msg);
          }
})

в данный момент createb.php только проверяет форму

  $requests = $_POST['show_request'];
  $request_count = count($requests);
  echo 'count: '.$request_count;
  echo $requests[0];

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

Спасибо, Дэвид

Ответы [ 4 ]

3 голосов
/ 12 июля 2014

Цитата из Документация по Jquery : Только «успешные элементы управления» сериализуются в строку (при использовании $ (form) .serialize ()) или в массив ($ (form) .serializeArray ()). Значения из флажков и переключателей (входы типа «радио» или «флажок») включаются, только если они отмечены.

Вы можете использовать что-то вроде этого, чтобы эмулировать поведение, подобное ожидаемому:

var myCbValuesArray = $("input:checkbox").map(function(){
  return $(this).is(":checked");
}).get();
3 голосов
/ 22 марта 2011

Что ж, это правда, поскольку у вас есть все флажки с именем name и любые id для их разделения.

попробуйте создать их следующим образом:

<input 
    type = "checkbox" 
    id = "ckb_<?php echo $i ?>"
    name = "ckb_<?php echo $i ?>_show_request[]" 
    value = "request".$i."
    checked = "checked"/> select request

IЯ уверен, что $('#b-form').serialize() теперь будет генерировать все флажки, как вы хотите

2 голосов
/ 23 мая 2013

Ваш селектор неверен.

Попробуйте:

$('#b-form input:checkbox').serialize()

Для получения только проверенного ввода используйте:

$('#b-form input:checkbox:checked').serialize()
1 голос
/ 01 января 2016

Это будет работать для вас.

Вы можете получить выбранные значения флажков

 $("input[type='checkbox']:checked").serialize();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...