2016-05-12 8 views
0

Ich habe ein HTML-Formular:Format Geld nicht funktioniert

<form id="zahlungsvereinbarung-rechnungen"> 
       <input type="checkbox" value="2400" name="rechnungen-pt[]" id="20011" onchange="addRemoveToPT();"><label>&nbsp; Rechnung: 20011 vom 01.02.2016 (Offen: 2.400,00)</label><br>     </form> 

Diese Form dynamisch erstellt wird (manchmal mehr als einen Eintrag).

Wenn ich versuche, den Wert aus diesem Eingabefeld ein und wandeln es in ein Format Geldwert mit diesem Skript zu lesen:

Number.prototype.formatMoney = function(c, d, t){ 
 
var n = this, 
 
    c = isNaN(c = Math.abs(c)) ? 2 : c, 
 
    d = d == undefined ? "." : d, 
 
    t = t == undefined ? "," : t, 
 
    s = n < 0 ? "-" : "", 
 
    i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", 
 
    j = (j = i.length) > 3 ? j % 3 : 0; 
 
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ""); 
 
}; 
 

 

 
function addRemoveToPT(re_nr, betrag) 
 
{ 
 

 
//erst machen wir das Fenster zur Zahlungsmodalität wieder unsichtbar 
 
document.getElementById("zahlungsmodalitaet_pt").style.display = "none"; 
 

 
//Jetzt schauen wir uns jede Checkbox an, welchen Wert sie hat 
 
betragOpen = 0; 
 
var elements = document.getElementById("zahlungsvereinbarung-rechnungen").elements["rechnungen-pt[]"]; 
 
if(elements.length > 1) 
 
{ 
 
\t 
 
\t for(var i = 0; i < elements.length; i++) 
 
\t { 
 
\t 
 
\t \t if(elements[i].value > 0 && elements[i].checked) 
 
\t \t { 
 
\t \t \t 
 
\t \t \t betragOpen += parseInt(elements[i].value); 
 
\t \t \t 
 
\t \t } 
 
\t \t 
 
\t 
 
\t } 
 
\t 
 
}else 
 
{ 
 
\t 
 
\t betragOpen = elements.value; 
 
\t 
 
} 
 

 
if(betragOpen > 0) 
 
{ 
 
\t 
 
\t document.getElementById("betrag_pt_gesamt").innerHTML = betragOpen.formatMoney(2, ",", "."); 
 
\t document.getElementById("zahlungsmodalitaet_pt").style.display = "block"; 
 
\t 
 
}else 
 
{ 
 
\t 
 
\t document.getElementById("zahlungskonfiguration").style.display = "none"; 
 
\t 
 
} 
 

 
}

ich einen Fehler

betragOpen.formatMoney is not a function 

Ich bekomme diesen Fehler nur, wenn die Liste der Eingabefelder nur ein Element enthält. Wenn es mehr Elemente gibt (auch wenn ich nur ein Element überprüfe) funktioniert es.

Irgendwelche Ideen?

+0

wo ist dein formatMoney() Funktion.? – RJParikh

+0

wo ist der PHP und jQuery Teil davon? Auch IDs müssen eindeutig sein. Wechseln Sie zu 'onclick =" addRemoveToPT (this); "' und 'function addRemoveToPT (checkbox)', um auf das Element in der Form zuzugreifen, in der es sich befindet – mplungjan

Antwort

0

Oh mein Gott - sobald ich diesen Beitrag fand ich die Lösung:

ich die parseInt im „else“ Teil vergessen ... Hier den Code der Funktion, wo das Problem war:

function addRemoveToPT(re_nr, betrag) 
 
{ 
 
\t 
 
\t //erst machen wir das Fenster zur Zahlungsmodalität wieder unsichtbar 
 
\t document.getElementById("zahlungsmodalitaet_pt").style.display = "none"; 
 
\t 
 
\t //Jetzt schauen wir uns jede Checkbox an, welchen Wert sie hat 
 
\t betragOpen = 0; 
 
\t var elements = document.getElementById("zahlungsvereinbarung-rechnungen").elements["rechnungen-pt[]"]; 
 
\t if(elements.length > 1) 
 
\t { 
 
\t \t 
 
\t \t for(var i = 0; i < elements.length; i++) 
 
\t \t { 
 
\t \t 
 
\t \t \t if(elements[i].value > 0 && elements[i].checked) 
 
\t \t \t { 
 
\t \t \t \t 
 
\t \t \t \t betragOpen += parseInt(elements[i].value); 
 
\t \t \t \t 
 
\t \t \t } 
 
\t \t \t 
 
\t \t 
 
\t \t } 
 
\t \t 
 
\t }else 
 
\t { 
 
\t \t 
 
\t \t betragOpen = parseInt(elements.value); 
 
\t \t 
 
\t } 
 
\t 
 
\t if(betragOpen > 0) 
 
\t { 
 
\t \t 
 
\t \t document.getElementById("betrag_pt_gesamt").innerHTML = betragOpen.formatMoney(2, ",", "."); 
 
\t \t document.getElementById("zahlungsmodalitaet_pt").style.display = "block"; 
 
\t \t 
 
\t }else 
 
\t { 
 
\t \t 
 
\t \t document.getElementById("zahlungskonfiguration").style.display = "none"; 
 
\t \t 
 
\t } 
 
\t 
 
}

Verwandte Themen