Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JSON]passare json tra 2 select element

    Ciao,
    Ho un file con un json così formato:
    codice:
    {
        "form": {
        "HOW-I": {
            "1": {
                "12": true,
                "13": true
            },
            "2": {
                "21": true,
                "22": true,
                "11": {
                    "12": true,
                    "21": true
                }
            }
        },
        "HOW-II": {
            "11": {
                "1": true,
                "2": true
            },
            "12": {
                "21": true,
                "22": true,
                "11": {
                    "12": true,
                    "21": {
                        "1":true,
                        "2":true
                    }
                }
            }
        }
    }}
    Al primo step del mio script prelevo le proprietà di "form" e costruisco un select con le voci "HOW-I" e "HOW-II"

    esempio del dom:
    codice HTML:
    <select id="pippo">
    <option value="HOW-I">HOW-I</option>
    <option value="HOW-II">HOW-II</option>
    </select>
    A questo punto devo in base alla scelta del select "Pippo" creare un select nuovo relativo al suo livello nell'oggetto json, Prendiamo come esempio che io seleziono "HOW-II", quindi dovrò creare un nuovo select con i valori "11" e "12"

    codice HTML:
    <select id="pippo">
    <option value="HOW-I">HOW-I</option>
    <option value="HOW-II" selected>HOW-II</option>
    </select>
    <br>
    <select>
    <option value="11">id11</option>
    <option value="12">id12</option>
    </select>
    continuando con questa logica se io selezionassi il valore "12" del secondo select element si dovrebbe creare un nuovo select con le voci "21","22","11" che seguendo il json iniziale sono i livelli annidiati partendo da "HOW-II".

    La costruzione dei select non è un problema, quello che ho difficoltà e passare il path padre che mi serve per capire quali option devo generare da un onchange e un'altro.

    In teoria, se nel secondo select element dovessi selezionare il "12" dovrei passare alla funzione che crea il nuovo select il path form->HOW-II->12 da cui estrarre le proprietà che mi creano il nuovo select con le rispettive voci (21,22,11)
    Luca Bottoni's World
    www.bottonisworld.com

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    228
    con JQuery potresti usare un evento change per intercettare il cambio del valore,

    a questo punto prendi gli elementi dal tuo array e con $('#select_da_valorizzare').html('tutte le tue opzioni prese dall'array JSON')

    in realtà è un pelo più complicato di così ma nemmeno troppo, se spieghi meglio il tuo codice ti dico come fare

  3. #3
    devo ancora finirla, ma risolvo con questa soluzione:
    codice:
    create("HOW-II");
    codice:
    function create(path)
        {
    
            var paths = path.split('.');
    
            var current = form;//var global contenente il JSON
            var newpath=new String();
            var i;
            for (i = 0; i < paths.length; ++i)
                {
                    if (current[paths[i]] != undefined)
                    {
    
                        current = current[paths[i]];
                    }
                }
    
            lihtml="<li><select>";
            for(p in current)
            {
                v=path+"."+p;
                lihtml+="<option value='"+v+"'>"+v+"</option>"
            }
            lihtml+="</select></li>";
            jQuery("#container > ul").append(lihtml);
    
            jQuery("#container > ul > li:last > select").change(function(){
            create(jQuery("option:selected",this).val());
            });
    
        }
    Nel box che si crea il path seguente sarà nei 2 options rispettivamente "HOW-II.11" e "HOW-II.12"
    Luca Bottoni's World
    www.bottonisworld.com

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    228
    Qualcosa del genere

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.