2016-05-12 36 views
0

我有一個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> 

這種形式是動態創建的(有時不止一個條目)。

當我嘗試讀取數值超出此輸入字段中,並與該腳本轉換爲格式貨幣值:

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 
 
} 
 

 
}

我得到一個錯誤

betragOpen.formatMoney is not a function 

如果輸入字段列表只包含一個元素,我只會得到這個錯誤。如果有更多的元素(即使我只檢查一個元素),它的工作。

任何想法?

+0

哪裏是你formatMoney()函數? – RJParikh

+0

這裏是PHP和jQuery的一部分嗎? ID也需要是唯一的。切換到'onclick =「addRemoveToPT(this);''和'addRemoveToPT(複選框)'來訪問它所在窗體中的元素 – mplungjan

回答

0

哦,我的上帝 - 只要我這後我找到了解決辦法:

我忘了parseInt函數中的「其他」的一部分......功能的下面的代碼,其中的問題是:

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 
 
}