【问题标题】:get multidimensional input with jQuery使用 jQuery 获取多维输入
【发布时间】:2013-04-15 21:49:21
【问题描述】:

我有一个用于 php 提交的多维数组复选框。现在我正在重建我的代码以使用 ajax。

<li class="formVariationParent">
  <input checked="" name="variationParent[]" autocomplete="off" value="3" type="checkbox">colors
    <ul>
      <li class="formVariationChild">
        <input checked="" name="variationChild[edit_var_val][3][4]" autocomplete="off" value="1" type="checkbox">red</li>
   </ul>
   <ul>
     <li class="formVariationChild">
       <input checked="" name="variationChild[edit_var_val][3][5]" autocomplete="off" value="1" type="checkbox">green
     </li>
   </ul>
   <ul>
     <li class="formVariationChild">
       <input checked="" name="variationChild[edit_var_val][3][6]" autocomplete="off" value="1" type="checkbox">blue
     </li>
   </ul>

这就是它的生成方式:

<fieldset>

    <a class="btn btn-new btn-primary" onclick="apfGenerateVariation(<?php echo $current_post ?>,<?php echo $get_admin_blog ?>,data);" style="cursor: pointer">
        <b><i class="icofont-star"></i></b>
    </a>
    <ul class="formVariations" id="formVariationsID"><li>
        <?php
            $parentArray = array();
            foreach ($parentVariations as $variation) {
                $parentArray[] = $variation->term_id;
            }
            foreach($variationCategories as $category) {
                //var_dump($category);
                //echo ;
                // check if this variation is already checked
                if (in_array($category->term_id, $parentArray)) {
                    if ($category->parent == 0) {
                        echo "</li><li class='formVariationParent'><input type='checkbox' checked name='variationParent[]' autocomplete='off' value='". $category->term_id ."'>" . $category->name . "";
                    } else {
                        echo "<ul><li class='formVariationChild'><input type='checkbox' checked name='variationChild[edit_var_val][". $category->parent ."][". $category->term_id ."]' autocomplete='off' value='1'>" . $category->name . "</li></ul>";
                    }
                } else {
                    if ($category->parent == 0) {
                        echo "</li><li class='formVariationParent'><input type='checkbox' name='variationParent[]' autocomplete='off' value='". $category->term_id ."'>" . $category->name . "";
                    } else {
                        echo "<ul><li class='formVariationChild'><input type='checkbox' name='variationChild[edit_var_val][". $category->parent ."][". $category->term_id ."]' autocomplete='off' value='1'>" . $category->name . "</li></ul>";
                    }
                }
            }
        ?>
    </ul>
</fieldset>

现在我想用 jQuery 选择这个 variationChild 并保存在变量 data 中,就像它被提交一样。

在输入名称中,第二个双亲是parentID,第三个是childID。我在 php 中有 thouse 变量,所以我可以重建这个输入但是我想要但是在和检查中 data 应该是这样的:

array(1) {
    ["edit_var_val"]=> array(2) {
        [3]=> array(3) {
            [6]=> string(1) "1"
            [5]=> string(1) "1"
            [4]=> string(1) "1"
        }
        [12]=> array(3) {
            [13]=> string(1) "1"
            [14]=> string(1) "1"
            [15]=> string(1) "1"
        }
    }
}

这里第一个数组是 parentID 3 的输入,第二个是这个表单的继续,其他 ParentID

这是我尝试使用的 jQuery。

var data = { 'edit_var_val[]' : []};
jQuery(".formVariationChild input:checked").each(function() {       
    data['edit_var_val[]'].push(jQuery(this).attr('name'));
});

我正在使用 jQuery .map().get() 函数,但我想这是不同的情况。

那么如何获取检查输入并将变量保存为这个数组呢?

【问题讨论】:

  • 在几个不同的 ul 中只有 li 似乎很奇怪。你能不能不喜欢
    • red...
    • green...
    • blue.... ?但除此之外。你的 js 代码是什么样子的,你想要实现什么?
  • 我添加了 php 它是如何生成的。在此代码的开头有带有 onclick 功能的锚标记。在这里我传递数据变量,我希望这些数据以与示例中的数组相同的顺序容器所有这些检查值。
  • 您似乎正在构建某种菜单?在您的问题中,您表示“现在我正在重建我的代码以使用 ajax。”你到底是什么意思?您当前的 jQuery 代码是什么样的?
  • 这是一个非常大的代码,实际上它是一个按该顺序获取数据的函数。这是一个 wordpress,带有一些商店插件,我正在构建仪表板“添加到产品”到前端。真的很难理解我想要什么,对吧?我不擅长描述事物。我想保持简单。此复选框表示单击第一个锚点后应生成的 childPosts 并生成 var 数据; jQuery(".formVariationChild input:checked").each(function() { //这里我尝试将数组推送到 var data });
  • 好的,看stackoverflow.com/questions/15745927/…如何获取值,然后序列化值并用AJAX/JSON发送到php-file。

标签: php jquery html arrays multidimensional-array


【解决方案1】:

如果我理解正确,您正在寻找这样的东西吗?

var data = {}; //create an object (instead of an array)
$('.formVariationChild input[type=checkbox]').each(function() {
    data[$(this).attr('value')] = $(this).attr('checked');
});

【讨论】:

    猜你喜欢
    • 2015-05-08
    • 2012-03-29
    • 1970-01-01
    • 2012-04-09
    • 2021-03-21
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多