Merhaba arkadaşlar bugün sizlere JavaScript kullanarak verilen bir değeri para brimi formatına çevirmeden bahsedeceğim.
Bunu bir fonksiyon yapısında hazırladım ve yapmanız gereken bu fonksiyonları projenize dahil ederek kullanmamız gerektiğinde değeri fonksiyona göndererek sonucu almak olacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Number.prototype.formatMoney = function (fractionDigits, decimal, separator) { fractionDigits = isNaN(fractionDigits = Math.abs(fractionDigits)) ? 2 : fractionDigits; decimal = typeof (decimal) === "undefined" ? "." : decimal; separator = typeof (separator) === "undefined" ? "," : separator; var number = this; var neg = number < 0 ? "-" : ""; var wholePart = parseInt(number = Math.abs(+number || 0).toFixed(fractionDigits)) + ""; var separtorIndex = (separtorIndex = wholePart.length) > 3 ? separtorIndex % 3 : 0; return neg + (separtorIndex ? wholePart.substr(0, separtorIndex) + separator : "") + wholePart.substr(separtorIndex).replace(/(\d{3})(?=\d)/g, "$1" + separator) + (fractionDigits ? decimal + Math.abs(number - wholePart).toFixed(fractionDigits).slice(2) : ""); }; |
Yukarıdaki fonksiyon gönderilen değerin küsüratının kaç basamak olacağını onun neyle ayrılacağını ve birde ondalık kısımlarda neyle ayrılacağını gönderdiğimiz zaman bize sonucu verecektir.
Bu fonksiyonu rahat bir şekilde kullanmak için aşağıdaki fonksiyonu da projemize ekliyoruz.
1 2 3 4 5 |
function formatMoney (raw) { return Number(raw).formatMoney(2, ',', '.'); } |
Yukarıdaki fonksiyonda da gönderilecek değerin küsüratını virgül ile iki basamak olacak şekilde ayıracaktır ve ondalık kısımlarını da ayırmak için nokta kullanacaktır. Bu kısımları istediğiniz gibi düzenleyebilirsiniz.
Örnek olarak :
formatMoney (15250) – > result : “15.250,00”
formatMoney (15000000) – > result : “15.000.000,00”
formatMoney (55257.36) – > result : “55.257,36”
Merhaba Yunus Bey, Javascript de oldukça yeniyim, yukarıdaki kodu bir input kullanarak nasıl çalıştırabilirim, yardımcı olur musunuz? Input kullanarak bir örnek yazmanız mümkün mü?
Merhabalar, yazının en alt kısmında zaten inputlu 3 tane örnek kullanımı vermişim. Yorum olarakta buraya ekliyorum.
formatMoney (15250) – > result : “15.250,00”
formatMoney (15000000) – > result : “15.000.000,00”
formatMoney (55257.36) – > result : “55.257,36”
Yunus Bey; kendimce bir şeyler yazdım ama çalıştıramadım. İnceleme şansınız varsa yardımcı olur musunuz?
https://js.do/mehmetyildizz/322532
Number.prototype.formatMoney = function (fractionDigits, decimal, separator) {
fractionDigits = isNaN(fractionDigits = Math.abs(fractionDigits)) ? 2 : fractionDigits;
decimal = typeof (decimal) === “undefined” ? “.” : decimal;
separator = typeof (separator) === “undefined” ? “,” : separator;
var number = this;
var neg = number 3 ? separtorIndex % 3 : 0;
return neg +
(separtorIndex ? wholePart.substr(0, separtorIndex) + separator : “”) +
wholePart.substr(separtorIndex).replace(/(\d{3})(?=\d)/g, “$1” + separator) +
(fractionDigits ? decimal + Math.abs(number – wholePart).toFixed(fractionDigits).slice(2) : “”);
};
formatMoney: function (field) {
var raw = document.getElementById(field).value;
return Number(raw).formatMoney(2, ‘,’, ‘.’);
}
Merhabalar
formatMoney: function (field) {
var raw = document.getElementById(field).value;
return Number(raw).formatMoney(2, ‘,’, ‘.’);
}
kısmını
function formatMoney (field) {
var raw = document.getElementById(field).value;
return Number(raw).formatMoney(2, ‘,’, ‘.’);
}
Şeklinde güncellerseniz çalışacaktır. Bir aralar code view tool yüzünden kodlar bozulmuştu sayfada kolar tekar yazmak zorunda kalmıştım ondan dolayı üstteki fonksiyon yazımı AngularJS formatında kalmış. Yazıda da o kısmı güncelleyeceğim.
Sizin gönderdiğiniz js.do linkinde de keypress değil bir textboxa tetikletirseniz çalışacaktır.