【问题标题】:serializing checkboxes in jQuery在jQuery中序列化复选框
【发布时间】:2016-01-01 18:20:04
【问题描述】:

我有一个 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];

问题是序列化函数只看到第一个复选框并指示它是否已被选中。它看不到任何其他复选框。有谁知道为什么其他复选框没有被序列化以及如何处理?

谢谢 大卫

【问题讨论】:

  • 你能把你的脚本生成的HTML代码也粘贴到这里吗?你贴在这里的代码我觉得很奇怪?!

标签: jquery checkbox


【解决方案1】:

来自Jquery documentation 的引用:只有“成功的控件”被序列化为字符串(使用 $(form).serialize() 时)或数组($(form).serializeArray())。复选框和单选按钮(“radio”或“checkbox”类型的输入)的值仅在它们被选中时才包含在内。

您可以使用类似的东西来模拟类似于您期望的行为:

var myCbValuesArray = $("input:checkbox").map(function(){
  return $(this).is(":checked");
}).get();

【讨论】:

    【解决方案2】:

    嗯,这是真的,因为您使用名称为 name 和任何 id 的所有复选框来分隔它们。

    尝试像这样创建它们:

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

    我确信$('#b-form').serialize() 现在会根据需要生成所有复选框

    【讨论】:

      【解决方案3】:

      您的选择器错误。

      试试:

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

      如果只获取检查的输入,请使用:

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

      【讨论】:

        【解决方案4】:

        这对你有用。

        您可以通过

        获取选中的复选框值
         $("input[type='checkbox']:checked").serialize();
        

        【讨论】:

          猜你喜欢
          • 2011-03-03
          • 2011-07-04
          • 2012-02-04
          • 1970-01-01
          • 2010-11-14
          • 1970-01-01
          • 2011-11-14
          • 2012-11-05
          • 2021-05-20
          相关资源
          最近更新 更多