javascript - Select Box Change Dependent Options dynamically -
i have question,i'll greatfull if 1 me find answer.
i have object:
myobj = { "red":{ "10729,10730,10732":{ "-2.75":["+1.75","+1.50","+1.25","+1.00","+0.75","+0.50","+0.25","-0.25"], "-2.50":["+2.00","0.00","-0.50","-0.75","-1.00","-1.25"], "-2.25":["+2.00","0.00","-1.50","-1.75","-2.00"], "-2.00":["+2.00","0.00","-2.00","-2.25"], "-1.75":["+2.00","0.00","-2.25"], "-1.50":["+2.00","0.00","-2.25"], "-1.25":["-2.25"], "-1.00":["+2.00","-2.25"], "-0.75":["+2.00","-2.25"], "-0.50":["+2.00","-2.25"], "-0.25":["-2.25"], "0.00":["+1.75","0.00","-2.25"], "+0.25":["-2.00","-2.25"], "+0.50":["+1.75","-1.75"], "+0.75":["+1.75","0.00","-1.50","-1.75"], "+1.00":["0.00","-1.50"], "+1.25":["+1.75","0.00","-1.25"], "+1.50":["+1.50","0.00","-1.00"], "+1.75":["0.00","-0.75","-1.00"], "+2.00":["+1.50","-0.50","-0.75"], "+2.25":["+1.50","-0.25","-0.50"], "+2.50":["+1.50","+0.25","0.00","-0.25"], "+2.75":["+1.50","+0.75","+0.50","+0.25"], "+3.00":["+1.75","+1.50","+1.25","+1.00","+0.75"], "+3.25":["+1.75","+1.50"] } }, "gray":{ "10730,10731":{ "-1.00":["+0.25","0.00","-0.25","-0.50"], "-0.75":["+0.75","+0.50","+0.25","-0.50","-0.75"], "-0.50":["+0.75","-0.75"], "-0.25":["+0.75","-0.75"], "0.00":["+3.25","+3.00","+2.75","+2.50","+2.25","+1.00","+0.75","-0.50","-0.75","-1.50","-1.75"], "+0.25":["+1.00","-0.50"],"+0.50":["+1.00","-0.50"],"+0.75":["+1.00","-0.50"] } } };//end of myobj
i looping through , appending values select tag options here code:
for(h in myobj){ //h color (x in myobj[h]) { //x diameter for(y in myobj[h][x]){ //y cylinder $(".cyl").append('<option value="">' + y + '</option>'); for(z in myobj[h][x][y]){ //// z array of sph,and myobj[h][x][y][z] array elements $(".sph").append('<option value="">' + myobj[h][x][y][z] + '</option>'); } ////sph }////cyl } }
the loop works perfectly.i don't want push elements, arrays values. or dependent option list. example, user select first cylinder "-2.75"
, second select tag display values it's array
["+1.75","+1.50","+1.25","+1.00","+0.75","+0.50","+0.25","-0.25"]
any ideas? in advance.
var myobj = { "red": { "10729,10730,10732": { "-2.75": ["+1.75", "+1.50", "+1.25", "+1.00", "+0.75", "+0.50", "+0.25", "-0.25"], "-2.50": ["+2.00", "0.00", "-0.50", "-0.75", "-1.00", "-1.25"], "-2.25": ["+2.00", "0.00", "-1.50", "-1.75", "-2.00"], "-2.00": ["+2.00", "0.00", "-2.00", "-2.25"], "-1.75": ["+2.00", "0.00", "-2.25"], "-1.50": ["+2.00", "0.00", "-2.25"], "-1.25": ["-2.25"], "-1.00": ["+2.00", "-2.25"], "-0.75": ["+2.00", "-2.25"], "-0.50": ["+2.00", "-2.25"], "-0.25": ["-2.25"], "0.00": ["+1.75", "0.00", "-2.25"], "+0.25": ["-2.00", "-2.25"], "+0.50": ["+1.75", "-1.75"], "+0.75": ["+1.75", "0.00", "-1.50", "-1.75"], "+1.00": ["0.00", "-1.50"], "+1.25": ["+1.75", "0.00", "-1.25"], "+1.50": ["+1.50", "0.00", "-1.00"], "+1.75": ["0.00", "-0.75", "-1.00"], "+2.00": ["+1.50", "-0.50", "-0.75"], "+2.25": ["+1.50", "-0.25", "-0.50"], "+2.50": ["+1.50", "+0.25", "0.00", "-0.25"], "+2.75": ["+1.50", "+0.75", "+0.50", "+0.25"], "+3.00": ["+1.75", "+1.50", "+1.25", "+1.00", "+0.75"], "+3.25": ["+1.75", "+1.50"] } }, "gray": { "10730,10731": { "-1.00": ["+0.25", "0.00", "-0.25", "-0.50"], "-0.75": ["+0.75", "+0.50", "+0.25", "-0.50", "-0.75"], "-0.50": ["+0.75", "-0.75"], "-0.25": ["+0.75", "-0.75"], "0.00": ["+3.25", "+3.00", "+2.75", "+2.50", "+2.25", "+1.00", "+0.75", "-0.50", "-0.75", "-1.50", "-1.75"], "+0.25": ["+1.00", "-0.50"], "+0.50": ["+1.00", "-0.50"], "+0.75": ["+1.00", "-0.50"] } } }; //end of myobj //doc ready $(function() { fillcolors(); }); // change event of colors $(document).on('change', 'select[name=color]', function() { filldiameters($(this).val()); }); // change event of diameter $(document).on('change', 'select[name=diameter]', function() { fillcylinderrs($('select[name=color] option:selected').val(), $(this).val()); }); //function fill colors function fillcolors() { $('select[name=color]').append($('<option>select</option>')); (var property in myobj) { if (myobj.hasownproperty(property)) { $('select[name=color]').append($('<option value="' + property + '">' + property + '</option>')); } } } //function fill diameter function filldiameters(color) { $('select[name=diameter]').html(''); $('select[name=cylinder]').html(''); $('select[name=diameter]').append($('<option>select</option>')); (var property in myobj[color]) { if (myobj[color].hasownproperty(property)) { (var diameter in myobj[color][property]) { if (myobj[color][property].hasownproperty(diameter)) { $('select[name=diameter]').append($('<option value="' + diameter + '">' + diameter + '</option>')); } } } } } //function fill cylinder function fillcylinderrs(color, paramdiameter) { $('select[name=cylinder]').html(''); $('select[name=cylinder]').append($('<option>select</option>')); (var property in myobj[color]) { if (myobj[color].hasownproperty(property)) { (var diameter in myobj[color][property]) { if (myobj[color][property].hasownproperty(diameter) && diameter == paramdiameter) { var cylinders = myobj[color][property][diameter]; (var cyl in cylinders) { $('select[name=cylinder]').append($('<option value="' + cylinders[cyl] + '">' + cylinders[cyl] + '</option>')); } } } } } }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select name="color"> </select> <select name="diameter"> </select> <select name="cylinder"> </select>
are looking this.
Comments
Post a Comment