使用 .serializeArray 从所有选中的复选框中获取值
Posted
技术标签:
【中文标题】使用 .serializeArray 从所有选中的复选框中获取值【英文标题】:Get value from all checked checkboxes with .serializeArray 【发布时间】:2016-04-14 06:29:40 【问题描述】:已解决 我没有在输入字段中使用“名称”。当我在输入中添加名称时,我立即工作。
我有一个中等大小的菜单,其中包含几个子类别和许多复选框。我使用 php、mysql 和 jquery/javascript 处理自定义 CMS。
菜单是一个带有“保存”按钮的表单,需要从选中的复选框中获取所有值。
在按钮上,我使用了 onclick 函数,该函数会导致我使用这些 id 并将它们存储在表中的类。
<input type="submit" value="Save" class="save-butt" onclick="sjx('domain', $( ':checkbox' ).serializeArray()); return false;">
它不起作用;我没有收到任何错误,但似乎没有发送该值。 如果有帮助,这是我的菜单代码。
<div class="personal-right-box">
<ul class="doe-list">
<?php
$mainCat = Db::query('SELECT * FROM categories WHERE parent_id = 0 ORDER BY orderby DESC');
foreach ($mainCat as $main) ?>
<li>
<span><i class="fa fa-caret-down toggle-down"></i><?php echo $main['title_hr']; ?></span>
<ul class="doe-list-sub">
<?php
$subCat = Db::query('SELECT * FROM categories WHERE parent_id = '.$main['id'].' ORDER BY title_hr ASC');
foreach ($subCat as $sub) ?>
<li>
<input type="checkbox" name="" id="aaeroplanes-b1-b2" value="<?php echo $sub['id']; ?>">
<label for="aaeroplanes-b1-b2"><?php echo $sub['title_hr']; ?></label>
<i class="fa fa-caret-down toggle-down"></i>
<ul class="doe-list-sub">
<?php
$subsubCat = Db::query('SELECT * FROM categories WHERE parent_id = '.$sub['id'].' ORDER BY title_hr ASC');
foreach ($subsubCat as $subsub) ?>
<li>
<input type="checkbox" name="" id="piston-engine-aeroplanes-b1-2" value="<?php echo $subsub['id']; ?>">
<label for="piston-engine-aeroplanes-b1-2"><?php echo $subsub['title_hr']; ?></label>
<i class="fa fa-caret-down toggle-down"></i>
<ul class="doe-list-sub">
<?php
$subsubsubCat = Db::query('SELECT * FROM categories WHERE parent_id = '.$subsub['id'].' ORDER BY title_hr ASC');
foreach ($subsubsubCat as $subsubsub) ?>
<li>
<input type="checkbox" name="" id="cessna" value="<?php echo $subsubsub['id']; ?>">
<label for="cessna"><?php echo $subsubsub['title_hr']; ?></label>
<i class="fa fa-caret-down toggle-down"></i>
<ul class="doe-list-sub group">
<?php
$items = Db::query('SELECT * FROM categories WHERE parent_id = '.$subsubsub['id'].' ORDER BY title_hr ASC');
foreach ($items as $item) ?>
<li class="col-1-3">
<input type="checkbox" name="" id="" value="<?php echo $item['id']; ?>">
<label for=""><?php echo $item['title_hr']; ?></label>
</li>
<?php ?>
</ul>
</li>
<?php ?>
</ul>
</li>
<?php ?>
</ul>
</li>
<?php ?>
</ul>
</li>
<?php ?>
</ul><!-- end of .doe-list -->
<span class="save-button-form">
<input type="submit" value="Save" class="save-butt" onclick="sjx('domain', $( ':checkbox' ).serializeArray()); return false;">
</span>
</div>
感谢您的帮助。
【问题讨论】:
【参考方案1】:首先序列化使用name
,如果没有找到,则使用id
。在您的情况下,您有一个空白name
,因此在您的结果中。
您可以复制name
中的相同内容或将其删除。
【讨论】:
我用 id 试过但没有用,但用 name 效果很好。以上是关于使用 .serializeArray 从所有选中的复选框中获取值的主要内容,如果未能解决你的问题,请参考以下文章
如何从 PHP 中的 serializeArray 获取 POST 值?
使用 .serializeArray() Javascript 时如何自定义键值对?