0

ユーザーが入力を追加できるフォームがあります。必要な数の入力を追加できるようにします。「新規追加」ボタンをクリックするたびに、次のことが起こります。

$('#add_specification').on('click', function(){
        var new_item = '<input type="text" class="specification_title" title="TITLE" /> : <input type="text" class="specification_desc" title="DESCRIPTION" /> ';
        $('#specifications_inputs_holder').append(new_item);
    });

上記のコードでわかるように、クリックするたびに 2 つの新しい入力がフォームに追加されます。1 つ目はタイトル用、2 つ目は説明用です。ユーザーが [新規追加] ボタンをクリックしたとします 3 6 つの入力ボックスがあります。

ここに画像の説明を入力

今、フォームを送信したいのですが、値全体を次のように送信できるようにしたいと考えています。

var specifications = ('Title 1=>Description 1','Title 2=>Description 2','Title 3=>Description 3');

したがって、サーブ側では、関連するデータを相互に見ることができましたが、どうすればこれを達成できますか?

私がすべきだと思うのは、jQuery each() と配列を使用することです。

$('#specifications_inputs_holder input').each(function(count){
    specifications[count] = $(this).val();
});

しかし、これは良い解決策ではありません。誰かが私を助けてくれますか? ありがとう

4

2 に答える 2

1

jQuery の場合:

var spec = [];
$('.specification_title').each(function() {
  var index = $(this).attr('data-index');

  $(spec).push({$(this).val():$('.specification_desc[data-index='+index).val()});

});

そして、あなたの追加アイテム機能で:

var new_item = '<input type="text" data-index='+parseint($('.specification_title').length+1)+' class="specification_title" title="TITLE" /> : <input type="text" data-index='+parseint($('.specification_title').length+1)+' class="specification_desc" title="DESCRIPTION" /> ';

これは、最後のアイテムのみを削除できる場合に機能します (data-index の場合)。それ以外の場合は、代わりに増分グローバル変数を使用してください。

[編集]

そして、入力名をコンテンツと同期するように変更して、適切な配列を取得するのはどうですか... より速くするために!

$('input[class^="specification"').change(function() {
  $(this).attr('name', $(this).val());
});
于 2013-03-27T15:52:02.813 に答える
1

単純な for ループを使用して、XML 経由ですべてのキーと値のペアを取得し、それらを配列にプッシュできます。

var $title = $('.specification_title'),
    $desc =- $('.specification_desc'),
    arr = [];

for(var i=0;i<$title.length;i++){
    var key = $title.eq(i).val(),
        val = $desc.eq(i).val(),
        pair = {key:val};
    arr.push(pair);
}

これで、次のような配列ができました。

[{title1:desc1},{title2:desc2},...,{titleX:descX}]

そうすれば、PHP 側では、入力したキーをそのまま使用できます。

于 2013-03-27T15:59:28.683 に答える