格式化货币无效
Format Money not working
我有一个HTML表单:
<form id="zahlungsvereinbarung-rechnungen">
<input type="checkbox" value="2400" name="rechnungen-pt[]" id="20011" onchange="addRemoveToPT();"><label> Rechnung: 20011 vom 01.02.2016 (Offen: 2.400,00)</label><br> </form>
此表单是动态创建的(有时不止一个条目)。
当我尝试从这个输入字段中读取值,并用这个脚本将其转换为货币值格式时:
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
只有当输入字段列表只包含一个元素时,我才会得到这个错误。如果有更多的元素(即使我只检查了一个元素),它就会工作。
有什么想法吗?
天哪,我一发布这篇文章就找到了解决方案:
我忘了"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";
}
}
相关文章:
- 货币代码为欧元-金额的格式不应包含小数
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- 将数字四舍五入到小数点后两位,以设置货币格式
- 这个问号在Flow中意味着什么:“;?()=>“无效”;
- 从字符串末尾删除空白无效
- Jquery Datatables错误:无效的JSON基元:draw
- 滚动在Chrome中有效,但在Firefox或IE中无效
- 带Js的货币转换器
- 使用JAVASCRIPT转换货币.可以't通过我的函数设置转换后的输入文本字段的值
- 错误:语法错误,无法识别的表达式:不支持的伪:无效/RectJS/Unit Testing
- Javascript setattribute-名称和值无效
- 格式化货币无效
- JavaScript错误无效的限定符
- 按键事件无效的原因
- Laravel数据表无效的JSON响应
- 文本字段显示它是有效的,即使它在ExtJS中是无效的
- 浏览器intl.NumberFormat未正确显示货币符号
- JS代码在jsbin中有效,在jsfiddle或Chrome/Safari中无效
- JS toLocaleString始终显示货币符号,而不考虑区域设置