W mojej witrynie mam dynamicznie generowane drzewo pól wyboru z JSON, teraz muszę uzyskać zaznaczone wartości w następującym obiekcie, który stanie się tablicą obiektów takich jak ten:

var config = {
    negozio: 1,
    cassa: [{
        CS: 1,
        operatore: []
    }]    
};

Negozio to górne pole wyboru dla rodzica cassa jest pierwszym podrzędnym polem wyboru, które może zawierać inny poziom pola wyboru o nazwie operatore, właściwie próbowałem zrobić coś takiego w metodzie „on.change” na wejściu pola wyboru

var config = [];
$(".nav").on("change", "input[type='checkbox']", function () {


    var selezione = {
        cassa: [{
            operatore: []
        }]
    };

    $(".check-negozio").each(function () {
        if (this.checked || this.indeterminate) {
            const npv = $(this).attr('data-npv');
            if (npv != null)
                selezione.negozio = npv;
            $(".check-cassa").each(function () {
                if (this.checked || this.indeterminate) {
                    const cs = $(this).attr('data-cs');
                    if (cs != null)
                        selezione.cassa.push({ CS: cs });
                    $(".check-operatore").each(function () {
                        if (this.chedked) {
                            const op = $(this).attr('data-op');
                            if (op != null)
                                selezione.cassa.operatore.push({ OP: op });
                        }
                    })
                }
            })
        }
    })

    config.push(selezione);
    console.log(config)
    //$.post("api/prodotti/post/", config);
});

Problem polega na tym, że z następującą metodą operatore i CS są na oddzielnych poziomach, więc obiekt wygląda następująco: [{ cassa: [{ CS: 1 }, { operatore: [] }], negozio: "0" }] kiedy powinien być [{ cassa: [{ CS: 1, operatore: [] }], negozio: "0" }]

Oto JSFiddle z przykładem na żywo z kodem HTML i JS

2
NiceToMytyuk 17 grudzień 2019, 11:37

1 odpowiedź

Zgodnie z powyższym kodem, najpierw wpychałeś obiekt CS, a następnie operatore do tablicy cassa. Zamiast tego możesz spróbować przygotować zarówno wartości CS, jak i operatore, a następnie powiązać je w jeden obiekt i wcisnąć do cassa. Coś takiego:

selezione.cassa.push({ CS: cs , operatore: op });
0
Aravind Anil 17 grudzień 2019, 14:47