17. november 2003 - 17:36
Der er
9 kommentarer og 1 løsning
Beregn pris udfra antal og stk. pris i formular m. javascript
Jeg har en formular hvor man vælger hvilken vare man skal have i en liste. derefter bliver varenr. og pris automatisk udfyldt, med den data der passer til den valgte vare. Til sidst bliver priserne for de valgte varer summeret i et total-felt nederst på siden. Koden til siden er vist neden for! Det jeg mangler er, at man skal kunne indtaste et antal af den valgte vare. Det ville være godt hvis prisen varens pris blev ganget med med antallet hvis det kan lade sig gøre, men det er ikke nødvendigt. Men total-feltet nederst på siden skal selvfølgelig beregne den totale pris. Altså skal hver varepris ganges med antalet før de læges sammen. Håber nogle kan hjælpe <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Automatisk udfyld tekstfelter i formular</title> <script language="JavaScript" type="text/javascript"> function kommaTal(tal1,tal2){ tal1=parseFloat(tal1.replace(/\,/gi,".")); tal2=parseFloat(tal2.replace(/\,/gi,".")); tal1=(isNaN(tal1))?0:tal1; tal2=(isNaN(tal2))?0:tal2; tal=String(tal1+tal2); tal=((tal.indexOf(".")==-1)?tal+",00":tal); tal=((tal.indexOf(".")==tal.length-2)?tal+"0":tal); tal=tal.replace(/\./gi,","); return (tal); } function writeNumbers(sel,frm,nm){ frm.elements['hvad'+nm].value=sel.text; sel=sel.value.split("/"); frm.elements['pris'+nm].value=sel[0]; frm.elements['nr'+nm].value=sel[1]; var sum = "0,00"; for(i=0;frm.elements.length>i;i++){ if(frm.elements[i].name.indexOf('pris')==0)sum = kommaTal(sum,frm.elements[i].value); } frm.sum.value=sum; return; } </script> </head> <body> <form name="form1" method="post" action=""> Liste<select name="liste1" onChange="writeNumbers(this.options[this.selectedIndex],this.form,this.name.substring(5));"> <option value="/" selected></option> <option value="50,25/b-264">rensevæske</option> <option value="218/w33-9">anden væske</option> </select> <br> Vare<input type="text" name="hvad1"> <br> Pris:<input type="text" name="pris1"> <br> Varenr.<input type="text" name="nr1"> <br> Liste <select name="liste2" onChange="writeNumbers(this.options[this.selectedIndex],this.form,this.name.substring(5));"> <option value="/" selected></option> <option value="50,25/b-264">rensevæske</option> <option value="218/w33-9">anden væske</option> </select> <br> Vare<input type="text" name="hvad2"> <br> Pris:<input type="text" name="pris2"> <br> Varenr.<input type="text" name="nr2"> <br> Liste<select name="liste3" onChange="writeNumbers(this.options[this.selectedIndex],this.form,this.name.substring(5));"> <option value="/" selected></option> <option value="50,25/b-264">rensevæske</option> <option value="218/w33-9">anden væske</option> </select> <br> Vare<input type="text" name="hvad3"> <br> Pris:<input type="text" name="pris3"> <br> Varenr.<input type="text" name="nr3"> <br> Liste <select name="liste4" onChange="writeNumbers(this.options[this.selectedIndex],this.form,this.name.substring(5));"> <option value="/" selected></option> <option value="50,25/b-264">rensevæske</option> <option value="218/w33-9">anden væske</option> </select> <br> Vare<input type="text" name="hvad4"> <br> Pris:<input type="text" name="pris4"> <br> Varenr.<input type="text" name="nr4"> <br> <br> Sum:<input type="text" name="sum"> </form> </body> </html>
Annonceindlæg fra Cognizant
17. november 2003 - 18:07
#1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Automatisk udfyld tekstfelter i formular</title> <script language="JavaScript" type="text/javascript"> function kommaTal(tal1,tal2){ tal1=parseFloat(tal1.replace(/\,/gi,".")); tal2=parseFloat(tal2.replace(/\,/gi,".")); tal1=(isNaN(tal1))?0:tal1; tal2=(isNaN(tal2))?0:tal2; tal=String(tal1+tal2); tal=((tal.indexOf(".")==-1)?tal+",00":tal); tal=((tal.indexOf(".")==tal.length-2)?tal+"0":tal); tal=tal.replace(/\./gi,","); return (tal); } function writeNumbers(sel,frm,nm){ if(!isNaN(frm.elements['antal'+nm].value)){ frm.elements['hvad'+nm].value=sel.text; sel=sel.value.split("/"); frm.elements['pris'+nm].value=parseFloat(sel[0].replace(/\,/gi,"."))*(+frm.elements['antal'+nm].value); frm.elements['nr'+nm].value=sel[1]; var sum = "0,00"; for(i=0;frm.elements.length>i;i++){ if(frm.elements[i].name.indexOf('pris')==0)sum = kommaTal(sum,frm.elements[i].value); } frm.sum.value=sum;} return; } </script> </head> <body> <form name="form1" method="post" action=""> <table><tr><td>Liste</td><td>Antal</td><td>Vare</td><td>Pris</td><td>Varenr.</td></tr> <tr><td> <select name="liste1" onChange="writeNumbers(this.options[this.selectedIndex],this.form,this.name.substring(5));"> <option value="/" selected></option> <option value="50,25/b-264">rensevæske</option> <option value="218/w33-9">anden væske</option> </select> <br></td><td> <input type="text" name="antal1" size="5" onchange="writeNumbers(this.form.elements['liste'+this.name.substring(5)].options[this.form.elements['liste'+this.name.substring(5)].selectedIndex],this.form,this.name.substring(5));"> <br></td><td> <input type="text" name="hvad1"> <br></td><td> <input type="text" name="pris1"> <br></td><td> <input type="text" name="nr1"> <br></td></tr><tr><td> <select name="liste2" onChange="writeNumbers(this.options[this.selectedIndex],this.form,this.name.substring(5));"> <option value="/" selected></option> <option value="50,25/b-264">rensevæske</option> <option value="218/w33-9">anden væske</option> </select> <br></td><td> <input type="text" name="antal2" size="5" onchange="writeNumbers(this.form.elements['liste'+this.name.substring(5)].options[this.form.elements['liste'+this.name.substring(5)].selectedIndex],this.form,this.name.substring(5));"> <br></td><td> <input type="text" name="hvad2"> <br></td><td> <input type="text" name="pris2"> <br></td><td> <input type="text" name="nr2"> <br></td></tr><tr><td> <select name="liste3" onChange="writeNumbers(this.options[this.selectedIndex],this.form,this.name.substring(5));"> <option value="/" selected></option> <option value="50,25/b-264">rensevæske</option> <option value="218/w33-9">anden væske</option> </select> <br></td><td> <input type="text" name="antal3" size="5" onchange="writeNumbers(this.form.elements['liste'+this.name.substring(5)].options[this.form.elements['liste'+this.name.substring(5)].selectedIndex],this.form,this.name.substring(5));"> <br></td><td> <input type="text" name="hvad3"> <br></td><td> <input type="text" name="pris3"> <br></td><td> <input type="text" name="nr3"> <br></td></tr><tr><td> <select name="liste4" onChange="writeNumbers(this.options[this.selectedIndex],this.form,this.name.substring(5));"> <option value="/" selected></option> <option value="50,25/b-264">rensevæske</option> <option value="218/w33-9">anden væske</option> </select> <br></td><td> <input type="text" name="antal4" size="5" onchange="writeNumbers(this.form.elements['liste'+this.name.substring(5)].options[this.form.elements['liste'+this.name.substring(5)].selectedIndex],this.form,this.name.substring(5));"> <br></td><td> <input type="text" name="hvad4"> <br></td><td> <input type="text" name="pris4"> <br></td><td> <input type="text" name="nr4"> <br></td></tr><tr><td> <select name="liste5" onChange="writeNumbers(this.options[this.selectedIndex],this.form,this.name.substring(5));"> <option value="/" selected></option> <option value="50,25/b-264">rensevæske</option> <option value="218/w33-9">anden væske</option> </select> <br></td><td> <input type="text" name="antal5" size="5" onchange="writeNumbers(this.form.elements['liste'+this.name.substring(5)].options[this.form.elements['liste'+this.name.substring(5)].selectedIndex],this.form,this.name.substring(5));"> <br></td><td> <input type="text" name="hvad5"> <br></td><td> <input type="text" name="pris5"> <br></td><td> <input type="text" name="nr5"> <br></td></tr><tr><td> </table> Sum:<input type="text" name="sum"> </form> </body> </html>
18. november 2003 - 08:58
#2
Du er for fed !!! ;-) Tusind Tak
18. november 2003 - 09:06
#3
lige en lille detalje. Hvordan ændre jeg den så Antal=1 når man vælger en vare? Derved vil man også kunne se stk. prisen med det samme.
18. november 2003 - 09:48
#4
Til gengæld kan varenr. bortfalde
18. november 2003 - 12:17
#5
function writeNumbers(sel,frm,nm){ a = frm.elements['antal'+nm]; if(isNaN(a.value)||a.value==""){alert('isNaN');a.value = 1;} frm.elements['hvad'+nm].value=sel.text; sel=sel.value.split("/"); frm.elements['pris'+nm].value=parseFloat(sel[0].replace(/\,/gi,"."))*(+frm.elements['antal'+nm].value); frm.elements['nr'+nm].value=sel[1]; var sum = "0,00"; for(i=0;frm.elements.length>i;i++){ if(frm.elements[i].name.indexOf('pris')==0)sum = kommaTal(sum,frm.elements[i].value); frm.sum.value=sum;} return; } -- og velbekomme '-)
18. november 2003 - 16:38
#6
øh den kommer med en fejlbesked "isNaN" Hvad er det? :-(
18. november 2003 - 16:40
#7
Glemte at fjerne lidt debug-kode: if(isNaN(a.value)||a.value==""){a.value = 1;}
18. november 2003 - 16:42
#8
cool sår er den hjemme! Tak igen :-)
18. november 2003 - 16:53
#9
Lige en sidste ting. Kan du give mig en variant hvor der ikke er noget varenr-felt?
18. november 2003 - 19:00
#10
Fjern nr-td'erne: <td> <input type="text" name="nr4"> <br></td> Ændr værdierne i options: <option value="50,25/b-264">rensevæske</option> bliver til: <option value="50,25">rensevæske</option> -- og funktionen: function writeNumbers(sel,frm,nm){ a = frm.elements['antal'+nm]; if(isNaN(a.value)||a.value==""){alert('isNaN');a.value = 1;} frm.elements['hvad'+nm].value=sel.text; frm.elements['pris'+nm].value=parseFloat(sel.value.replace(/\,/gi,"."))*(+frm.elements['antal'+nm].value); var sum = "0,00"; for(i=0;frm.elements.length>i;i++){ if(frm.elements[i].name.indexOf('pris')==0)sum = kommaTal(sum,frm.elements[i].value); frm.sum.value=sum;} return; }
Vi tilbyder markedets bedste kurser inden for webudvikling