0

フォームの複製で忙しいので、送信を押すと、次の形式でjsonに解析したいと思います。

{ "dependant1": [
  { "name": "daniel"},
  ],"dependant2": [
  { "name": "steve"},
  ]
}

扶養家族を追加するたびに、現時点では、扶養家族を1つ以上追加すると、「{} {}」が返されますが、扶養家族が1つしかない場合は、「{"name":"steve"}」が返されます。

どんな助けでも大いに感謝します。コードは次のとおりです。

jQuery:

        //Clone Tracking
var g_counter = 1;
var d_counter = 1;
var dependant = ["dependant"];
var group;
//Clone Tracking
//General Variables
var name_input_groups = ["name-group-1"];
//General Variables
//Generate variables
var name_fields=[0];
var name_input = "<input class='name' />";
//Generate variables
jQuery(document).ready(function(e) {
    jQuery(name_fields).each(function() {
        jQuery(name_input).appendTo('#name-group-1');
    });
    //populate jquery generated fields
    //Cloning Function
    jQuery('#clone').click(function() {
        clone_dependant();
    });

    function clone_dependant() {
        // Store the value of the previous Id to insert the cloned div..
        var oldId = g_counter;
        g_counter++;
        // Clone the Dependant Div and set a new id
        var $clonedDiv = jQuery('#dependant-1').clone(false).attr('id', 'dependant-'+g_counter);
        var name_newDiv = 'name-group-'+ g_counter;
        // Find div's inside the cloned object and set a new id's
        $clonedDiv.find('#name-group-1').attr('id',"name-group-" + g_counter );
        // You don't need to Loop thru the inputs to set the value
        $clonedDiv.find('input').val('');
        // Insert the cloned object 
        $clonedDiv.insertAfter("#dependant-" + oldId);
        name_input_groups.push(name_newDiv);
    };
    //Cloning Function
    function validate_gen() {};
//submit function
var dep_counter = 0
jQuery('#submit').click(function(){
    $('.dependant').each(function(k, v){
        dep_counter++;
        var dependants = {};
    dependants['name'] = jQuery("#name-group-" + dep_counter).find('input').val();
        var json = JSON.stringify(dependants); 
        console.log(json);
    });
});
});

そしてここにHTMLがあります:

<div id="dependant-1" class="dependant">
    name<div id="name-group-1"></div>
</div>
<div id="test"></div>

<button id="clone">clone</button>
<button id="submit">submit</button>

およびjsFiddleリンク-http : //jsfiddle.net/dawidvdh/TzRu8/2/

ありがとう。

4

3 に答える 3

0

あなたのjsonは不正です。http://jsonlint.com/を使用してjson形式を検証できます。

たとえば、これは正しい形式です

 { "dependant1": [{ "name": "daniel"}] },
 { "dependant2": [{ "name": "steve" }] }

有効なjson形式を生成するには、スクリプトを書き直す必要があります。上記のパターンに従って、さらに扶養家族を追加します.... steveがdanielの副扶養家族でない限り、構造は最初に作成したものに近くなります。

于 2013-01-11T07:21:55.870 に答える
0

コードに2つのエラーがあります。

1:

$clonedDiv.find('#name-group-1').attr('id',"#name-group-" + g_counter );

'name-group'の前に'#'を付けないでください:

$clonedDiv.find('#name-group-1').attr('id',"name-group-" + g_counter );

2:

dependants['name'] = jQuery("#name-group-" + g_counter ).val();

ここで、「g_counter」は「dep_counter」である必要があります。

[アップデート]

ああ、すみません、3番目のエラーを忘れてしまいました:

dependants['name'] = jQuery("#name-group-" + dep_counter ).val();

する必要があります:

dependants['name'] = jQuery("#name-group-" + dep_counter ).find('input').val();

これらのエラーを修正すると、次のコードを使用して必要なものを取得できます。

var dep_counter = 0
var result = {};
jQuery('#submit').click(function(){
    $('.dependant').each(function(k, v){
        dep_counter++;
        var dependants = {};
        dependants['name'] = jQuery("#name-group-" + dep_counter).find('input').val();
        result['dependant'+dep_counter] = [dependants];
    });
    console.log(JSON.stringify(result));
});
于 2013-01-11T07:23:58.947 に答える
0

次のコードを使用するだけで、完全に機能しました。

    var result = {};
var dependants;
jQuery('#submit').click(function(){
    $('.dependant').each(function(k, v){
        dependants = {};
        dependants['name'] = $(v).find('.name').val();
        dependants['surname'] = $(v).find('.surname').val();
        dependants['id'] = idNumber;
        dependants['age'] = $(v).find('.age').val();
        dependants['gender'] = $(v).find('.gender').val();
        dependants['cell'] = cell_values;
        dependants['passport'] = pass_values;
        dependants['relationship'] = $(v).find('.relationship:checked').val();
        result['dependant'+g_counter] = [dependants];
    });

    var jsonData = JSON.stringify(result);

    console.log(jsonData);

    $.ajax({
        type: "POST",
        url: "mail.php",
        dataType: "json",
        data: {parameters: jsonData}
    });

});

みんな、ありがとう :)

于 2013-01-15T13:30:29.953 に答える