0

jQueryコードは、新しい仮想オブジェクト「.add」をオブジェクト「.main」に追加します

$(document).ready(function(){
    $('.main').on('click', '.add', function (){
    $('.main').append('<div class="add">Next element</div><input type="hidden" name="param[]" value="Next element"/>');
});
});

</script>

フォームが「main」のHTMLコード:

<form action="" method="post" class="main">
    <div class="add">First element</div>
    <input type="hidden" name="param[]" value="First element"/>
    <input type="submit" name="submit" value="go"/>
</form>

PHPは「param」配列を繰り返します:

if (isset($_POST['submit']))
{
    foreach ($_POST['param'] as $element) 
    {
        echo '<br/>'.$element;
    }
}

$ _POSTには、jqueryによって追加された要素は含まれません。直し方?

4

1 に答える 1

0

これが原因です:

 <input type="hidden" name="param[]" value="Next element"/>

私もこれを一度試しましたが、[]うまくいかない場合は、次のように実際のインデックスをそこに配置する必要があります。

<input type="hidden" name="param[1]" value="Next element"/>

最良の方法は、すでに持っているアイテムの長さを数え、その要素のインデックスを作成することです。

したがって、コードは次のようになります。

$(document).ready(function(){
    $('.main').on('click', '.add', function (){
        var i = $('.my_input').length-1; // Because its an array
        $('.main').append('<div class="add">Next element</div><input class="my_input" type="hidden" name="param['+i+']" value="Next element"/>');
    });
});

入力にクラスを追加した方法に注意してください。

編集

これがあなたの現在のHTMLで間違いなく動作するものです

$(document).ready(function(){
    $('.main').on('click', '.add', function (){
        var i = $('input[name*="param"]').length-1; // Because its an array
        $('.main').append('<div class="add">Next element</div><input type="hidden" name="param['+i+']" value="Next element"/>');
    });
});

それでももっとうまくいくかもしれませんが、まあ...

于 2012-06-28T14:16:45.530 に答える