0

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>

variationChildこれをjQueryで選択し、送信されたかのように変数に保存したいと思いますdata

入力名の 2 番目の括弧はparentIDと 3 番目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、2 番目はこのフォームの続き、otherParentIDです。

これは私が使用しようとしているjQueryです。

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

私はjQuery.map().get()関数を使用していますが、これは別のケースだと思います。

では、チェックされた入力を取得し、この配列として変数に保存する方法は?

4

1 に答える 1

0

私があなたを正しく理解していれば、あなたはこのようなものを探していますか?

var data = {}; //create an object (instead of an array)
$('.formVariationChild input[type=checkbox]').each(function() {
    data[$(this).attr('value')] = $(this).attr('checked');
});
于 2013-04-16T20:42:23.373 に答える