ainoy31 Posted December 8, 2007 Share Posted December 8, 2007 Hello- I am putting three forms in one. I have 3 radio buttons where someone can choose what they need to do. <input type="radio" name="shipment_type" value="AIR" onClick="hideAll(); changeDiv('air', 'block'); ">AIR <input type="radio" name="shipment_type" value="LCL" onClick="hideAll(); changeDiv('lcl', 'block'); ">LCL <input type="radio" name="shipment_type" value="FCL" onClick="hideAll(); changeDiv('fcl', 'block'); ">FCL <div id="air" style="display:none; "> ...code here </div> <div id="air" style="display:none; "> ...code here </div> <div id="air" style="display:none; "> ...code here </div> All three options use the same function to enter dimensions and then calculate the total dimensions. I am using javascript for the calculation. <td><input name="numpiece1" type="text" id="numpiece1" size = '10' onChange="calculate_volume()"> @</td> <td><input name="length1" type="text" id="length1" size = '10' onChange="calculate_volume()"></td> <td><input name="width1" type="text" id="width1" size = '10' onChange="calculate_volume()"></td> <td><input name="height1" type="text" id="height1" size = '10' onChange="calculate_volume()"></td> function calculate_volume(result) { var numpiece = Number(form1.numpiece1.value)+ Number(form1.numpiece2.value)+ Number(form1.numpiece3.value)+ Number(form1.numpiece4.value) document.getElementById('numpiece_1').value = numpiece; var ci=((Number(form1.length1.value)*Number(form1.width1.value)*Number(form1.height1.value))*Number(form1.numpiece1.value))+((Number(form1.length2.value)*Number(form1.width2.value)*Number(form1.height2.value))*Number(form1.numpiece2.value))+((Number(form1.length3.value)*Number(form1.width3.value)*Number(form1.height3.value))*Number(form1.numpiece3.value))+((Number(form1.length4.value)*Number(form1.width4.value)*Number(form1.height4.value))*Number(form1.numpiece4.value)) } My issue is that I do not want to have to duplicate the two functions above for all three. I hope this is clear enough as to what I need help with. Much appreciation. AM Quote Link to comment Share on other sites More sharing options...
phpQuestioner Posted December 8, 2007 Share Posted December 8, 2007 man - that's all I can say your going to have to display your full code; because you have allot stuff missing from the script you provided. you have field values in your javascript; that do not even exist in you html. try to tell me what you want to accomplish too; because I am lost and your script/html is not helping me. are you even able to make this code, you provided, function? because I tested it and it threw all kinds of errors. also; when you post code to these forums; use the code button before you put your code in the post - so much easier that way for us. it is the "#" button in the thread tools. code area looks like this: Put Code In Here also what is the "result" parameter in your calculate_volume function for? your not using it anywhere that I can see. Quote Link to comment Share on other sites More sharing options...
BenInBlack Posted December 8, 2007 Share Posted December 8, 2007 Well im going to take a stab at your not wanting to do multiple function <td><input name="numpiece1" type="text" id="numpiece-1" size = '10' onChange="calculate_volume(this)"> @</td> <td><input name="length1" type="text" id="length-1" size = '10' onChange="calculate_volume(this)"></td> <td><input name="width1" type="text" id="width-1" size = '10' onChange="calculate_volume(this)"></td> <td><input name="height1" type="text" id="height-1" size = '10' onChange="calculate_volume(this)"></td> function calculate_volume(inputObj) { var idIdx = inputObj.id.split("-")[1]; var numpiece = 0; var ci = 0 for (i=1;i<=4;i++) { numpiece = (numpiece + Number(document.getElementById('numpiece-'+i).value)); ci = (ci + (Number(document.getElementById('length-'+i).value)) * Number(document.getElementById('width-'+i).value) * Number(document.getElementById('height-'+i).value)); } document.getElementById('numpiece_'+idIdx).value = numpiece; document.getElementById('ci_'+idIdx).value = ci; } not sure what u are doing with ci so i made an input field with id of ci_# Quote Link to comment Share on other sites More sharing options...
phpQuestioner Posted December 8, 2007 Share Posted December 8, 2007 I don't know exactly what you were trying to do, but see if this is anywhere close: <script language="javascript"> function calculate_volume() { var field1 = document.getElementById('numpiece1').value; var field2 = document.getElementById('numpiece2').value; var field3 = document.getElementById('numpiece3').value; var field1a = document.getElementById('length1').value; var field2a = document.getElementById('length2').value; var field3a = document.getElementById('length3').value; var field1b = document.getElementById('width1').value; var field2b = document.getElementById('width2').value; var field3b = document.getElementById('width3').value; var field1c = document.getElementById('height1').value; var field2c = document.getElementById('height2').value; var field3c = document.getElementById('height3').value; var numpiece = (field1a*1) + (field1b*1) + (field1c*1); var numpieceA = (field2a*1) + (field2b*1) + (field2c*1); var numpieceB = (field3a*1) + (field3b*1) + (field3c*1); document.getElementById('numpiece1').value = numpiece; document.getElementById('numpiece2').value = numpieceA; document.getElementById('numpiece3').value = numpieceB; var ci = (field1 * field1a * field1b * field1c) + (field2 * field2a * field2b * field2c) + (field3 * field3a * field3b * field3c); } function changeDiv(pick,stylesel) { document.getElementById(pick).style.display = stylesel; } function hide(unpick1,unpick2) { document.getElementById(unpick1).style.display="none"; document.getElementById(unpick2).style.display="none"; } </script> <form name="form1"> <input type="radio" name="shipment_type" value="AIR" onClick="hide('lcl','fcl'); changeDiv('air', 'block'); ">AIR <input type="radio" name="shipment_type" value="LCL" onClick="hide('air','fcl'); changeDiv('lcl', 'block'); ">LCL <input type="radio" name="shipment_type" value="FCL" onClick="hide('air','lcl'); changeDiv('fcl', 'block'); ">FCL <div id="air" style="display:none"> <table> <td><input name="numpiece1" type="text" id="numpiece1" size = '10' onChange="calculate_volume()" value="0"> @</td> <td><input name="length1" type="text" id="length1" size = '10' onChange="calculate_volume()"></td> <td><input name="width1" type="text" id="width1" size = '10' onChange="calculate_volume()"></td> <td><input name="height1" type="text" id="height1" size = '10' onChange="calculate_volume()"></td> </table> </div> <div id="lcl" style="display:none"> <table> <td><input name="numpiece2" type="text" id="numpiece2" size = '10' onChange="calculate_volume()" value="0"> @</td> <td><input name="length2" type="text" id="length2" size = '10' onChange="calculate_volume()"></td> <td><input name="width2" type="text" id="width2" size = '10' onChange="calculate_volume()"></td> <td><input name="height2" type="text" id="height2" size = '10' onChange="calculate_volume()"></td> </table> </div> <div id="fcl" style="display:none"> <table> <td><input name="numpiece3" type="text" id="numpiece3" size = '10' onChange="calculate_volume()" value="0"> @</td> <td><input name="length3" type="text" id="length3" size = '10' onChange="calculate_volume()"></td> <td><input name="width3" type="text" id="width3" size = '10' onChange="calculate_volume()"></td> <td><input name="height3" type="text" id="height3" size = '10' onChange="calculate_volume()"></td> </table> </div> </form> I didn't know what the "ci" variable was for either; but I straightened it up a little bit for you. Quote Link to comment Share on other sites More sharing options...
ainoy31 Posted December 10, 2007 Author Share Posted December 10, 2007 Thanks for all the reply. I situation is a little bit hard to explain. So, I am going this route. I have three radio buttons to choose from. <input type="radio" name="shipment_type" value="AIR" id="air1" onClick="hideAll(); changeDiv('air', 'block'); ">AIR <input type="radio" name="shipment_type" value="LCL" id="lcl" onClick="hideAll(); changeDiv('dim', 'block'); ">LCL <input type="radio" name="shipment_type" value="FCL" id="fcl" onClick="hideAll(); changeDiv('dim', 'block'); ">FCL <div id="air" style="display:none; "> <br> <b>Known Shipper:</b> <input type="radio" name="known_shipper" value="Yes" onClick="hideAll(); changeDiv('dim', 'block'); ">Yes <input type="radio" name="known_shipper" value="No" onClick="hideAll(); changeDiv('dim', 'block'); ">No <input type="radio" name="known_shipper" value="Unknown" onClick="hideAll(); changeDiv('dim', 'block'); ">Unknown </div> <div id="dim" style="display:none; "> <br> <table> <tr> <td>Pieces Type:</td> <td> <select name="pieces_type" onchange="toggleOther( document.form1.pieces_type.options[ document.form1.pieces_type.selectedIndex ].value );"> <option value="">-Select One-</option> <option value="Pallets">Pallets</option> <option value="Packages">Packages</option> <option value="Totes">Totes</option> <option value="Other1">Other - Specify</option> </select> <input type="text" name="Other1" value="" size="25" maxlength="40" style="visibility:hidden" /> </td> </tr> <tr> <td><table> <tr> <td width="27%" align = 'center'>Pieces</font></td> <td width="23%" align = 'center'>Length</font></td> <td width="25%" align = 'center'>Width</font></td> <td width="25%" align = 'center'>Height</font></td> </tr> <tr> <td><input name="numpiece1" type="text" id="numpiece1" size = '10' onChange="calculate_volume()"> @</td> <td><input name="length1" type="text" id="length1" size = '10' onChange="calculate_volume()"></td> <td><input name="width1" type="text" id="width1" size = '10' onChange="calculate_volume()"></td> <td><input name="height1" type="text" id="height1" size = '10' onChange="calculate_volume()"></td> </tr> <tr> <td><input name="numpiece2" type="text" id="numpiece2" size = '10' onChange="calculate_volume()"> @</td> <td><input name="length2" type="text" id="length2" size = '10' onChange="calculate_volume()"></td> <td><input name="width2" type="text" id="width2" size = '10' onChange="calculate_volume()"></td> <td><input name="height2" type="text" id="height2" size = '10' onChange="calculate_volume()"></td> </tr> <tr> <td><input name="numpiece3" type="text" id="numpiece3" size = '10' onChange="calculate_volume()"> @</td> <td><input name="length3" type="text" id="length3" size = '10' onChange="calculate_volume()"></td> <td><input name="width3" type="text" id="width3" size = '10' onChange="calculate_volume()"></td> <td><input name="height3" type="text" id="height3" size = '10' onChange="calculate_volume()"></td> </tr> <tr> <td><input name="numpiece4" type="text" id="numpiece4" size = '10' onChange="calculate_volume()"> @</td> <td><input name="length4" type="text" id="length4" size = '10' onChange="calculate_volume()"></td> <td><input name="width4" type="text" id="width4" size = '10' onChange="calculate_volume()"></td> <td><input name="height4" type="text" id="height4" size = '10' onChange="calculate_volume()"></td> </tr> </table></td> </tr> <tr> <td>Total Dimension:</td> <td><input name="cubicinches1" type="text" id="cubicinches1" size = '10' READONLY><span id="measurement3"></span></td> </tr> <tr> <td>Dimensional Weight:</td> <td><input type="text" name="dim_wgt1" id="dim_wgt1" size="5" READONLY><span id="measurement2"></span></td> </tr> <tr> <td>Total Shipment Weight:</td> <td><input type="text" name="lbs1" id="amount1" size="5"> <input type="radio" name="weight1" value="lbs" id="weight1" onClick="convertUS(); ">Lbs <input type="radio" name="weight1" value="kgs" id="weight2" onClick="convertNonUS(); ">Kgs = <input type="text" name="result1" id="result1" size="5" READONLY> <span id="measurement1"></span> </td> </tr> <tr> <td>Chargeable Weight:</td> <td><input type="text" name="charge_wgt1" id="charge_wgt1" size="5" READONLY>Kgs</td> </tr> <tr> <td>Total Pieces:</td> <td><input name="numpiece_1" type="text" id="numpiece_1" value="" size="5" READONLY></td> </tr> </table> </div> Then, I have my javascript as: function calculate_volume(result) { var numpiece = Number(form1.numpiece1.value)+ Number(form1.numpiece2.value)+ Number(form1.numpiece3.value)+ Number(form1.numpiece4.value) document.getElementById('numpiece_1').value = numpiece; var ci=((Number(form1.length1.value)*Number(form1.width1.value)*Number(form1.height1.value))*Number(form1.numpiece1.value))+((Number(form1.length2.value)*Number(form1.width2.value)*Number(form1.height2.value))*Number(form1.numpiece2.value))+((Number(form1.length3.value)*Number(form1.width3.value)*Number(form1.height3.value))*Number(form1.numpiece3.value))+((Number(form1.length4.value)*Number(form1.width4.value)*Number(form1.height4.value))*Number(form1.numpiece4.value)) var x = document.getElementById('cubicinches1').value = ci; document.getElementById('measurement3').innerHTML = " Cubic Inches"; if(document.getElementsById('air1').value == 'air') { var dw1 = x / 366; //this give the dimensional weight in kgs var rnum = dw1 var rlength = 2; // The number of decimal places to round to if (rnum > 8191 && rnum < 10485) { rnum = rnum-5000; var dw = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength); dw = dw+5000; } else { var dw = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength); } var dw1 = document.getElementById('dim_wgt1').value = dw; document.getElementById('measurement2').innerHTML = " Kgs"; } if(document.getElementById('lcl').value == 'lcl') { var dw = x / 1728; //this gives the dimensional weight in CFT var dw1 = dw / 35.315; //this gives the dimensional weight in CBM var rnum = dw1 var rlength = 2; // The number of decimal places to round to if (rnum > 8191 && rnum < 10485) { rnum = rnum-5000; var dw = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength); dw = dw+5000; } else { var dw = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength); } var dw1 = document.getElementById('dim_wgt1').value = dw; document.getElementById('measurement2').innerHTML = " CBM"; } I need to distinguish in my javascript if AIR or LCL is selected. So I can do my calculation. Shouldn't this work: if(document.getElementById('lcl').value == 'lcl') { .....so forth } if(document.getElementById('air1).value == 'air') { .... } Thanks, AM Quote Link to comment Share on other sites More sharing options...
ainoy31 Posted December 10, 2007 Author Share Posted December 10, 2007 Re-doing my form... Thanks for all the suggestions. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.