格式化Money不起作用

时间:2016-05-12 09:24:01

标签: javascript html

我有一个HTML表单:

<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>

此表单是动态创建的(有时会有多个条目)。

当我尝试从此输入字段中读取值并使用此脚本将其转换为格式为Money值时:

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)
{
	
	for(var i = 0; i < elements.length; i++)
	{
	
		if(elements[i].value > 0 && elements[i].checked)
		{
			
			betragOpen += parseInt(elements[i].value);
			
		}
		
	
	}
	
}else
{
	
	betragOpen = elements.value;
	
}

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

}

我收到错误

betragOpen.formatMoney is not a function

如果输入字段列表只包含一个元素,我只会收到此错误。如果有更多的元素(即使我只检查一个元素)它的工作。

任何想法?

1 个答案:

答案 0 :(得分:0)

哦,天哪 - 我发布这个后就找到了解决办法:

我忘记了“else”部分中的parseInt ...这里是问题所在的函数的代码:

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)
	{
		
		for(var i = 0; i < elements.length; i++)
		{
		
			if(elements[i].value > 0 && elements[i].checked)
			{
				
				betragOpen += parseInt(elements[i].value);
				
			}
			
		
		}
		
	}else
	{
		
		betragOpen = parseInt(elements.value);
		
	}
	
	if(betragOpen > 0)
	{
		
		document.getElementById("betrag_pt_gesamt").innerHTML = betragOpen.formatMoney(2, ",", ".");
		document.getElementById("zahlungsmodalitaet_pt").style.display = "block";
		
	}else
	{
		
		document.getElementById("zahlungskonfiguration").style.display = "none";
		
	}
	
}