Når siden loades skal feldtet PERIODESTART udfyldes med dagens dato i dette format "13-09-2004". Feldtet PERIODESLUT skal automatisk udfylde sig selv med datoen fra PERIODESTART og lægge tre dage til.
Hvis man indtaster 2 i ANTAL og 20 i PRIS så skal IALT vise værdien i dette tilfælde 40.
I bunden er feldtet EXMOMS det feldt skal indeholde værdierne fra alle IALT feldterne lagt sammen.
Under er feldtet MOMS som er trækprocenten og her skal som standart være den normalt moms sats. Feldtet MOMSVIS skal vise hvor meget momsen udgøre.
Under igen er feldtet ATBETALE som skal vise værdien af EXMOMS minus MOMS.
Nederst er feldtet BETALINGSDATO, dette feldt skal finde den dato som er højest fra PERIODESLUT og så lægge 14 dage til.
Jeg håber at der er en som kan finde ud af at lave sådanne er script :)
Det skal siges der ikke tages hensyn til om momsen bliver ændret, da det lyder lidt mærkeligt at man skal kunne det. Man det kan hurtigt laves hvis du har brug for det.
Ellers skal du indstille hvor mange varer der er (antal rækker): var antal_rows = 10; og momsprocenten: var moms = 25; Kan indstilles oppe øverst i scriptet.
og så til en lille ændring, så den tester om datoerne er skrevet rigtigt ind: // Beregner summen var sum = 0; var maxDato = new Date().getTime(); for (i=1;i<=antal_rows;i++) { val = parseInt(frm.elements["ialt"+i].value); if (isNaN(val)) {val = 0;} sum += val; // Beregner betalingsdato temp_dato = frm.elements["periodeslut"+i].value.split("-"); if (temp_dato.length == 3) { d = new Date(parseInt(temp_dato[2]),parseInt(temp_dato[1])-1,parseInt(temp_dato[0])).getTime(); if (!isNaN(d)) {maxDato = Math.max(maxDato,d);} } } var d = new Date(); d.setTime(maxDato); frm.betalingsdato.value = d.getDate()+"-"+(d.getMonth()+1)+"-"+d.getFullYear();
Oki, en lille ting, det skal være muligt at ændre ialt værdien så så hvis resultatet er 40 skal det være muligt at indtaste fx 10 og det skal også ændres i resten at regne stykket...
Dato skal også helst være 13-09-2004 og ikke 13-9-2004, jeg mener at det skal være 2 cifret...
men hvis man ændrer ialt-prisen så duer antal og pris-felterne jo ikke. Og det er jo ikke sikkert de to ting kommer til at passe sammen. Så jeg skal lige høre hvordan du havde tænkt dig det skulle foregå - altså om pris og antal skal sættes til nul eller hva'?
Angående det andet problem, så kan det ændres på denne måde (inkluderer lige en funktion jeg havde liggende - så kan du måske også få glæde af den ellers): var antal_rows = 10; var moms = 25; window.onload = function() { now = new Date(); now3 = new Date(); now3.setTime(now.getTime()+1000*60*60*24*3); for (i=1;i<=antal_rows;i++) { document.form1.elements["periodestart"+i].value = now.format("DD-MM-YYYY"); document.form1.elements["periodeslut"+i].value = now3.format("DD-MM-YYYY"); } document.form1.moms.value = moms+"%"; }
/** * Formats the current date. * Added v0.2.10 * Last updated v0.3.6 * @param format the format-string. See Syntax. * @returns a string with the formatted date * Syntax: * YY = Year (to digits) case insentensive * YYYY = Year (four digits) case insentensive * MM = Month (two digits) case sentensive * DD = Day (two digits) case insentensive * hh = Hour (two digits) case insentensive * mm = Minutes (two digits) case sentensive * ss = Seconds (two digits) case insentensive **/ Date.prototype.format = function(format) { // Gets the date information date_day = ((day = this.getDate()) < 10) ? "0"+day : day; date_month = ((month = this.getMonth()+1) < 10)? "0"+month : month; date_year = this.getUTCFullYear(); date_hours = ((hours = this.getHours()) < 10) ? "0"+hours :hours; date_minutes = ((minutes = this.getMinutes()) < 10) ? "0"+minutes : minutes; date_seconds = ((seconds = this.getSeconds()) < 10) ? "0"+seconds : seconds; // Replace code with data format = format.replace(/DD/ig,date_day); format = format.replace(/MM/g,date_month); format = format.replace(/YYYY/ig,date_year); format = format.replace(/YY/ig,date_year.toString().substring(2,4)); format = format.replace(/hh/ig,date_hours); format = format.replace(/mm/g,date_minutes); format = format.replace(/ss/ig,date_seconds); return format; } // END function Date->format()
function beregn(elm) { // Beregner pris ialt for vare antal = parseInt(elm.value); num = elm.name.substr(elm.name.search(/\d/)); frm = elm.form; antal = parseInt(frm.elements["antal"+num].value); if (isNaN(antal)) {antal = 0;} pris = parseInt(frm.elements["pris"+num].value); if (isNaN(pris)) {pris = 0;} if (antal >= 0 && pris >= 0) { frm.elements["ialt"+num].value = pris*antal; } // Beregner summen var sum = 0; var maxDato = new Date().getTime(); for (i=1;i<=antal_rows;i++) { val = parseInt(frm.elements["ialt"+i].value); if (isNaN(val)) {val = 0;} sum += val; // Beregner betalingsdato temp_dato = frm.elements["periodeslut"+i].value.split("-"); if (temp_dato.length == 3) { d = new Date(parseInt(temp_dato[2]),parseInt(temp_dato[1])-1,parseInt(temp_dato[0])).getTime(); if (!isNaN(d)) {maxDato = Math.max(maxDato,d);} } } var d = new Date(); d.setTime(maxDato); frm.betalingsdato.value = d.format("DD-MM-YYYY"); // Beregner og indsætter de sidste slutresultater frm.exmoms.value = sum; momsvis = sum/100*moms; frm.momsvis.value = momsvis; frm.atbetale.value = sum - momsvis; }
nåja, havde glemt de 14 dage. I så fald skal dit script se sådan ud: var antal_rows = 10; var moms = 25; window.onload = function() { now = new Date(); now3 = new Date(); now3.setTime(now.getTime()+1000*60*60*24*3); for (i=1;i<=antal_rows;i++) { document.form1.elements["periodestart"+i].value = now.format("DD-MM-YYYY"); document.form1.elements["periodeslut"+i].value = now3.format("DD-MM-YYYY"); } document.form1.moms.value = moms+"%"; }
/** * Formats the current date. * Added v0.2.10 * Last updated v0.3.6 * @param format the format-string. See Syntax. * @returns a string with the formatted date * Syntax: * YY = Year (to digits) case insentensive * YYYY = Year (four digits) case insentensive * MM = Month (two digits) case sentensive * DD = Day (two digits) case insentensive * hh = Hour (two digits) case insentensive * mm = Minutes (two digits) case sentensive * ss = Seconds (two digits) case insentensive **/ Date.prototype.format = function(format) { // Gets the date information date_day = ((day = this.getDate()) < 10) ? "0"+day : day; date_month = ((month = this.getMonth()+1) < 10)? "0"+month : month; date_year = this.getUTCFullYear(); date_hours = ((hours = this.getHours()) < 10) ? "0"+hours :hours; date_minutes = ((minutes = this.getMinutes()) < 10) ? "0"+minutes : minutes; date_seconds = ((seconds = this.getSeconds()) < 10) ? "0"+seconds : seconds; // Replace code with data format = format.replace(/DD/ig,date_day); format = format.replace(/MM/g,date_month); format = format.replace(/YYYY/ig,date_year); format = format.replace(/YY/ig,date_year.toString().substring(2,4)); format = format.replace(/hh/ig,date_hours); format = format.replace(/mm/g,date_minutes); format = format.replace(/ss/ig,date_seconds); return format; } // END function Date->format()
function beregn(elm) { // Beregner pris ialt for vare antal = parseInt(elm.value); num = elm.name.substr(elm.name.search(/\d/)); frm = elm.form; antal = parseInt(frm.elements["antal"+num].value); if (isNaN(antal)) {antal = 0;} pris = parseInt(frm.elements["pris"+num].value); if (isNaN(pris)) {pris = 0;} if (antal >= 0 && pris >= 0) { frm.elements["ialt"+num].value = pris*antal; } beregnIalt(frm); } function beregnIalt(frm) { // Beregner summen var sum = 0; var maxDato = new Date().getTime(); for (i=1;i<=antal_rows;i++) { val = parseInt(frm.elements["ialt"+i].value); if (isNaN(val)) {val = 0;} sum += val; // Beregner betalingsdato temp_dato = frm.elements["periodeslut"+i].value.split("-"); if (temp_dato.length == 3) { d = new Date(parseInt(temp_dato[2]),parseInt(temp_dato[1])-1,parseInt(temp_dato[0])).getTime(); if (!isNaN(d)) {maxDato = Math.max(maxDato,d);} } } var d = new Date(); d.setTime(maxDato+1000*60*60*24*14); frm.betalingsdato.value = d.format("DD-MM-YYYY"); // Beregner og indsætter de sidste slutresultater frm.exmoms.value = sum; momsvis = sum/100*moms; frm.momsvis.value = momsvis; frm.atbetale.value = sum - momsvis; }
og du skal til hvert af dine ialt felter tilføje onkeyup="beregnIalt(this.form)": <input name="ialt1" onkeyup="beregnIalt(this.form)" type="text" size="7">
Du ved vel forresten godt at du glemmer at afslutte din font-tags!?!
nåja, det ser ud til at virke igen - og tak for points :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.