Hallo Leute,
beim meinem Formular können Zeilen hinzugefügt werden und die Summen im ersten Textfeld sollen addiert werden. Klappt auch soweit.
Zuerst einmal würde ich mich über Verbesserungsvorschläge der Funktion calc() und der enthaltenen RegEx sehr freuen, da ich in JS ein blutiger Anfänger bin?
Außerdem klappt es beim Entfernen der Zeile nicht, das neu kalkuliert wird?
Apollon
beim meinem Formular können Zeilen hinzugefügt werden und die Summen im ersten Textfeld sollen addiert werden. Klappt auch soweit.
Zuerst einmal würde ich mich über Verbesserungsvorschläge der Funktion calc() und der enthaltenen RegEx sehr freuen, da ich in JS ein blutiger Anfänger bin?
Außerdem klappt es beim Entfernen der Zeile nicht, das neu kalkuliert wird?
Apollon
HTML-Code:
<html> <head> <title></title> <script type="text/javascript"> <!-- var counter = 0; window.onload = function () { document.getElementById('moreFields').onclick = moreFields; moreFields(); } function moreFields() { counter++; var newFields = document.getElementById('readroot').cloneNode(true); newFields.id = ''; newFields.style.display = 'block'; var newField = newFields.childNodes; for (var i=0;i<newField.length;i++) { var theName = newField[i].name if (theName) { newField[i].name = theName + '[' + counter + ']'; newField[i].id = theName + '[' + counter + ']'; } } var insertHere = document.getElementById('writeroot'); insertHere.parentNode.insertBefore(newFields,insertHere); } function calc(formular, txtbox_name, total_name) { var total = 0; //nur gewünschte Felder addieren var txtbox_search = '^' + txtbox_name + '\\['; for(i=0; i < formular.form.elements.length; i++) { if(formular.form.elements[i].type == 'text' && formular.form.elements[i].name.search(txtbox_search) != -1) { //Komma tauschen var ElVal = formular.form.elements[i].value.replace(',','.') //Zahl prüfen if (!isNaN(parseFloat(ElVal))) total += Number(ElVal); } } document.getElementById(total_name).innerHTML = 'Gesamt: '+total; } // --> </script> </head> <body> <h3>Rechnen</h3> <div id="readroot" style="display: none"> <input onKeyUp="calc(this, 'price', 'total');" type="text" name="price"> <input type="button" value="Entfernen" onclick="this.parentNode.parentNode.removeChild(this.parentNode); calc(this, 'price', 'total');"/><br /><br /> </div> <form> <span id="writeroot"></span> <input type="button" id="moreFields" value="Neue Zeile" /> <br><br> <div id="total"></div> </form> </body> </html>
Kommentar