|
Online Order Form
|
|
You will now create an online order form. In an earlier project you actually created the HTML page for the order form. For this activity you will use a cut and paste JavaScript that is available from many free JavaScript sites. Just follow the directions below, then go in and edit the JavaScript to display your information. Here is the cut and paste JavaScript. Copy it and place it in a new notepad. Save it with the name shoppingform.html. Open it in a browser to see your online shopping form. <HTML> //Global Variables var RowsInForm = 10 //How many rows will be in the order details form var ProductsInList = 36 //Must equal highest subscript in product list var SalesTaxRate = 0.0775 //Set to sales tax rate in decimal. e.g. 0.0775 is 7.75% var TaxableState = "USA" //Set to name of state you charge sales tax in var ProdSubscript = 0 //Identifies subscript of selected product in current row.
function MakeArray(n) { this.length = n for (var i = 1; i<= n; i++) { this[i] = 0 } return this }
function BuildZeroArray(n) { this.length = n for (var i = 0; i<= n; i++) { this[i] = 0 } return this }
// An array of these objects will act as our product/price list. function prodobj(name, unitprice) { this.name = name this.unitprice = unitprice }
// Will house real numbers from order form to help with math. function ordobj(prodsub, qty, unitprice, extprice) { this.prodsub = prodsub this.qty = qty this.unitprice = unitprice this.extprice = extprice }
function strToZero(anyval) { anyval = ""+anyval if (anyval.substring(0,1) < "0" || anyval.substring(0,1) > "9") { anyval = "0" } return eval(anyval) }
function updateRow(rownum){ var exec = 'ProdSubscript = document.ordform.prodchosen'+rownum+'.selectedIndex' eval (exec) ordData[rownum].prodsub=ProdSubscript //get qty from the form var exec='tempqty=document.ordform.qty'+rownum+'.value' eval (exec) ordData[rownum].qty = strToZero(tempqty) //get unit price from the product price list. ordData[rownum].unitprice=prodlist[ProdSubscript].unitprice ordData[rownum].extprice = (ordData[rownum].qty) * ordData[rownum].unitprice var exec = 'document.ordform.unitprice'+rownum+'.value = currencyPad(ordData['+rownum+'].unitprice,10)' eval (exec) var exec = 'document.ordform.extprice'+rownum+'.value = currencyPad(ordData['+rownum+'].extprice,10)' eval (exec) updateTotals() //update totals at bottom of form }
function updateTotals() { var subtotal = 0 for (var i=1; i<=RowsInForm; i++) { subtotal = subtotal + ordData[i].extprice } document.ordform.subtotal.value = currencyPad(subtotal,10) salestax = 0 if (document.ordform.Taxable.checked) { salestax = SalesTaxRate * subtotal } document.ordform.salestax.value = currencyPad(salestax,10) document.ordform.grandtotal.value = currencyPad(subtotal+salestax,10) } //copy the "Bill To" information to the "Ship To" information. function copyAddress() { document.ordform.ShipName.value = document.ordform.billName.value document.ordform.ShipCompany.value = document.ordform.billCompany.value document.ordform.ShipAdd1.value = document.ordform.billAdd1.value document.ordform.ShipAdd2.value = document.ordform.billAdd2.value document.ordform.ShipCSZ.value = document.ordform.billCSZ.value }
//returns number as string in $xxx,xxx.xx format. anynum = "" + eval(anynum) //evaluate (in case an expression sent) intnum = parseInt(anynum) //isolate integer portion intstr = ""+intnum //add comma in thousands place. if (intnum >= 1000) { intlen = intstr.length temp1=parseInt(""+(intnum/1000)) temp2=intstr.substring(intlen-3,intlen) intstr = temp1+","+temp2 } if (intnum >= 1000000) { intlen = intstr.length temp1=parseInt(""+(intnum/1000000)) temp2=intstr.substring(intlen-7,intlen) intstr = temp1+","+temp2 } decnum = Math.abs(parseFloat(anynum)-parseInt(anynum)) //isolate decimal portion decnum = decnum * 100 // multiply decimal portion by 100. decstr = "" + Math.abs(Math.round(decnum)) while (decstr.length < 2) { decstr += "0" } retval = intstr + "." + decstr if (intnum < 0) { retval=retval.substring(1,retval.length) retval="("+retval+")" } retval = "$"+retval while (retval.length < width){ retval=" "+retval } return retval } </SCRIPT> </HEAD> //Create a new array named prodlist with six elements. prodlist = new BuildZeroArray(ProductsInList) //Refers to global variable ProductsInList //Populate that array with this product info. //The first item, prodlist[0] must be a "non-product" with //a unitprice of zero. prodlist[0] = new prodobj('-none-',0) prodlist[1] = new prodobj('Anachronistic Widget',10.00) prodlist[2] = new prodobj('Bombastic Gadget',10.50) prodlist[3] = new prodobj('Cosmic Wingydingy',11.00) prodlist[4] = new prodobj('Desultory Doodad',11.99) prodlist[5] = new prodobj('Ethereal Entity',12.00) prodlist[6] = new prodobj('Fantastic Fingmabob',14.99) prodlist[7] = new prodobj('Fantastic Fingmabob',14.99) prodlist[8] = new prodobj('Humongous Humanoid',99.99) prodlist[9] = new prodobj('Ignominious Innuendo',100.00) prodlist[10] = new prodobj('Jumping Jehosafatz',250.00) prodlist[11] = new prodobj('Jumping Jehosafatz',250.00) prodlist[12] = new prodobj('Jumping Jehosafatz',250.00) prodlist[13] = new prodobj('Jumping Jehosafatz',250.00) prodlist[14] = new prodobj('Fantastic Fingmabob',14.99) prodlist[15] = new prodobj('Jumping Jehosafatz',250.00) prodlist[16] = new prodobj('Jumping Jehosafatz',250.00) prodlist[17] = new prodobj('Jumping Jehosafatz',250.00) prodlist[18] = new prodobj('Jumping Jehosafatz',250.00) prodlist[19] = new prodobj('Jumping Jehosafatz',250.00) prodlist[20] = new prodobj('Jumping Jehosafatz',250.00) prodlist[21] = new prodobj('Fantastic Fingmabob',14.99) prodlist[22] = new prodobj('Jumping Jehosafatz',250.00) prodlist[23] = new prodobj('Jumping Jehosafatz',250.00) prodlist[24] = new prodobj('Jumping Jehosafatz',250.00) prodlist[25] = new prodobj('Jumping Jehosafatz',250.00) prodlist[26] = new prodobj('Jumping Jehosafatz',250.00) prodlist[27] = new prodobj('Jumping Jehosafatz',250.00) prodlist[28] = new prodobj('Fantastic Fingmabob',14.99) prodlist[29] = new prodobj('Jumping Jehosafatz',250.00) prodlist[30] = new prodobj('Jumping Jehosafatz',250.00) prodlist[31] = new prodobj('Jumping Jehosafatz',250.00) prodlist[32] = new prodobj('Jumping Jehosafatz',250.00) prodlist[33] = new prodobj('Jumping Jehosafatz',250.00) prodlist[34] = new prodobj('Jumping Jehosafatz',250.00) prodlist[35] = new prodobj('Fantastic Fingmabob',14.99) prodlist[36] = new prodobj('Jumping Jehosafatz',250.00) //Create a new array, named ordData, that contains empty Order Objects. ordData = new MakeArray(RowsInForm) for (var i=1; i<= RowsInForm; i++) { ordData[i] = new ordobj(0,0,0,0)} </SCRIPT> for (var rownum = 1;rownum <= RowsInForm; rownum++) { document.write('<TR><TD WIDTH=192>') document.write('<SELECT NAME="prodchosen'+rownum+'" onChange= "updateRow('+rownum+')">') for (i = 0; i <= ProductsInList; i++) { document.write ("<OPTION>"+prodlist[i].name) } document.write ('</SELECT>') document.write ('</TD><TD WIDTH=72><CENTER><INPUT NAME="qty'+rownum+'" VALUE=""') document.write ('MAXLENGTH="3" SIZE=3 onChange="updateRow('+rownum+')"></CENTER>') document.write ('</TD><TD WIDTH=120><CENTER>') document.write ('<INPUT NAME="unitprice'+rownum+'" VALUE="" MAXLENGTH="10"') document.write ('SIZE=10 onfocus="this.blur()"></CENTER>') document.write ('</TD><TD WIDTH=120><CENTER>') document.write ('<INPUT NAME="extprice'+rownum+'" VALUE="" MAXLENGTH="10"') document.write ('SIZE=10 onfocus = "this.blur()"></CENTER>') document.write ('</TD></TR>') } </SCRIPT> <P></P></CENTER></TBODY></TABLE> document.write(TaxableState) </SCRIPT> </body> Make sure you go back into the JavaScript and edit the information
so that it reflects your menu. Make sure you change the business name,
dish name, and price in the Shopping Form.
|
