jquery - Doing calculations using javascript with select options? -
somebody please me javascript coding. building website using asp.net there multiple html select elements , selected option determines value of input box be, see link: http://codepen.io/anon/pen/evauc
i gonna have 67 dropdown nightmare code inefficient code.
please me write more efficient code these 2 selects , can rest myself.
cheers.
i split code in parts (i used jquery), though should still change function names , calculatevalue implementation make code more clear.
$(document).ready(function(){ initcalculation($('#keytechtextbox'),$("#dropdown_servervirtualisation"),$("#dropdown_desktopvirtualisation")); //more can added here }); function initcalculation(inputfield,select1,select2){ select1.change(function(){ //this can done more generic inputfield.val(calculatevalue(select1.val(),select2.val()).tofixed(0)+"%"); }); select2.change(function(){ inputfield.val(calculatevalue(select1.val(),select2.val()).tofixed(0)+"%"); }); } function calculatevalue(firstopt,secondopt){ //more abstract function name please :d //you should optimize this.. - did var sv_value = 10; var sv1 =0; var sv2 = sv_value; var dv1 =0; var dv2 = dv_value; if (firstopt === "g") { sv1 = sv_value; } if (firstopt === "o") { sv1 = sv_value * 0.5; } if (firstopt === "a") { sv1 = sv_value * 0.3; } if (firstopt === "r") { sv1 = 0; } else if (firstopt === "u") { sv1 = 0; } if (secondopt === "n") { dv2 = 0; } if (secondopt === "g") { dv1 = dv_value; } if (secondopt === "o") { dv1 = dv_value * 0.5; } if (secondopt === "a") { dv1 = dv_value * 0.3; } var keytechtotal1 = sv1 + dv1; var keytechtotal2 = sv2 + dv2; return (keytechtotal1) / (keytechtotal2) * 100; } below show more generic javascript solution
change min , max attributes each option in html , there start calculating.
you can genericly insert data min , max attributes in .net
<input class="textbox" runat="server" type="text" id="keytechtextbox" readonly="true" /> <select runat="server" id="dropdown_servervirtualisation" onchange="keytechadoption()"> <option class="lightgrey" value="n" data-min="0" data-max="1">n</option> <option class="green" value="g" data-min="0" data-max="1">g</option> <option class="orange" value="o" data-min="0" data-max="1">o</option> <option class="yellow" value="a" data-min="0" data-max="1">a</option> <option selected="selected" class="red" value="r" data-min="0" data-max="1">r</option> <option class="purple" value="u" data-min="0" data-max="1">u</option> </select> <select runat="server" id="dropdown_desktopvirtualisation" onchange="keytechadoption()"> <option class="lightgrey" value="n" data-min="0" data-max="1">n</option> <option class="green" value="g" data-min="0" data-max="1">g</option> <option class="orange" value="o" data-min="0" data-max="1">o</option> <option class="yellow" value="a" data-min="0" data-max="1">a</option> <option selected="selected" class="red" value="r" data-min="0" data-max="1">r</option> <option class="purple" value="u" data-min="0" data-max="1">u</option> </select> <script type="text/javascript"> function initcalculation(inputfield,select1,select2){ opt1 = select1.find('option:selected'); opt2 = select2.find('option:selected'); select1.change(function(){ //this can done more generic inputfield.val(calculatevalue(opt1,opt2).tofixed(0)+"%"); }); select2.change(function(){ inputfield.val(calculatevalue(opt1,opt2).tofixed(0)+"%"); }); } function calculateoptions(el1,el2){ calculatevalue(el1.data('min'),el1.data('max'),el1.data('min'),el1.data('max')); } function calculatevalue(sv1,sv2,dv1,dv2){ //more abstract function name please :d var keytechtotal1 = sv1 + dv1; var keytechtotal2 = sv2 + dv2; return (keytechtotal1) / (keytechtotal2) * 100; } </script>
Comments
Post a Comment