jQuery:货币格式编号

我的html中有这样的数字

950000

我希望jQuery改变它

 
Rp. 950.000

我怎么能在jquery中做到这一点?

除以1000,并使用.toFixed(3)来固定小数位数。

 var output = (input/1000).toFixed(3); 

[编辑]

上述解决方案仅适用于原始问题中的点是小数点的情况。 然而OP的评论意味着它的目的是千分之一。

在这种情况下,没有单行解决方案(Javascript没有内置),但它可以通过相当短的function实现。

这里有一个很好的例子: http : //www.mredkj.com/javascript/numberFormat.html#addcommas

或者,可以在此处找到更复杂的字符串格式化函数,该printf()模仿来自C语言的printf()函数: http : //www.diveintojavascript.com/projects/javascript-sprintf

这是数字分组的酷正则表达式:

 thenumber.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1."); 

有一个插件, jquery-formatcurrency 。

您可以为自定义格式设置小数点分隔符(默认值)和货币符号(默认值为$ ),或使用内置的国际支持 。 印度尼西亚语(印度尼西亚语) – 印尼语(印度尼西亚语)编码的id-ID的格式与您提供的格式最接近。

 $(document).ready(function() { var num = $('div.number').text() num = addPeriod(num); $('div.number').text('Rp. '+num) }); function addPeriod(nStr) { nStr += ''; x = nStr.split('.'); x1 = x[0]; x2 = x.length > 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + '.' + '$2'); } return x1 + x2; } 
 function converter() { var number = $(.number).text(); var number = 'Rp. '+number; s(.number).val(number); } 

请在下面的代码中找到我为支持国际化而开发的内容。 它将给定的数值格式化为特定于语言的格式。 在给定的例子中,我使用了‘en’,同时测试了‘es’‘fr’和其他格式不同的国家。 它不仅可以阻止用户键入字符,还可以将选项卡上的值格式化。 已为NumberDecimal格式创建了组件。 除此之外还创建了parseNumber(value,locale)parseDecimal(value,locale)函数,这些函数将解析格式化数据以用于任何其他业务目的。 所述函数将接受格式化数据并将返回非格式化值。 我在下面的共享代码中使用了JQueryvalidation器插件。

HTML:

    

JavaScript的:

  /* * @author: dinesh.lomte */ /* Holds the maximum limit of digits to be entered in number field. */ var numericMaxLimit = 13; /* Holds the maximum limit of digits to be entered in decimal field. */ var decimalMaxLimit = 16; /** * * @param {type} value * @param {type} locale * @returns {Boolean} */ parseDecimal = function(value, locale) { value = value.trim(); if (isNull(value)) { return 0.00; } if (isNull(locale)) { return value; } if (getNumberFormat(locale)[0] === '.') { value = value.replace(/\./g, ''); } else { value = value.replace( new RegExp(getNumberFormat(locale)[0], 'g'), ''); } if (getNumberFormat(locale)[1] === ',') { value = value.replace( new RegExp(getNumberFormat(locale)[1], 'g'), '.'); } return value; }; /** * * @param {type} element * @param {type} locale * @param {type} nanMessage * @returns {Boolean} */ decimalFormatter = function (element, locale, nanMessage) { showErrorMessage(element.id, false, null); if (isNull(element.id) || isNull(element.value) || isNull(locale)) { return true; } var value = element.value.trim(); value = value.replace(/\s/g, ''); value = parseDecimal(value, locale); var numberFormatObj = new Intl.NumberFormat(locale, { minimumFractionDigits: 2, maximumFractionDigits: 2 } ); if (numberFormatObj.format(value) === 'NaN') { showErrorMessage(element.id, true, nanMessage); setFocus(element.id); return false; } element.value = numberFormatObj.format(value); return true; }; /** * * @param {type} element * @param {type} locale * @param {type} nanMessage * @returns {Boolean} */ numberFormatter = function (element, locale, nanMessage) { showErrorMessage(element.id, false, null); if (isNull(element.id) || isNull(element.value) || isNull(locale)) { return true; } var value = element.value.trim(); var format = getNumberFormat(locale); if (hasDecimal(value, format[1])) { showErrorMessage(element.id, true, nanMessage); setFocus(element.id); return false; } value = value.replace(/\s/g, ''); value = parseNumber(value, locale); var numberFormatObj = new Intl.NumberFormat(locale, { minimumFractionDigits: 0, maximumFractionDigits: 0 } ); if (numberFormatObj.format(value) === 'NaN') { showErrorMessage(element.id, true, nanMessage); setFocus(element.id); return false; } element.value = numberFormatObj.format(value); return true; }; /** * * @param {type} id * @param {type} flag * @param {type} message * @returns {undefined} */ showErrorMessage = function(id, flag, message) { if (flag) { // only add if not added if ($('#'+id).parent().next('.app-error-message').length === 0) { var errorTag = '
' + message + '
'; $('#'+id).parent().after(errorTag); } } else { // remove it $('#'+id).parent().next(".app-error-message").remove(); } }; /** * * @param {type} id * @returns */ setFocus = function(id) { id = id.trim(); if (isNull(id)) { return; } setTimeout(function() { document.getElementById(id).focus(); }, 10); }; /** * * @param {type} value * @param {type} locale * @returns {Array} */ parseNumber = function(value, locale) { value = value.trim(); if (isNull(value)) { return 0; } if (isNull(locale)) { return value; } if (getNumberFormat(locale)[0] === '.') { return value.replace(/\./g, ''); } return value.replace( new RegExp(getNumberFormat(locale)[0], 'g'), ''); }; /** * * @param {type} locale * @returns {Array} */ getNumberFormat = function(locale) { var format = []; var numberFormatObj = new Intl.NumberFormat(locale, { minimumFractionDigits: 2, maximumFractionDigits: 2 } ); var value = numberFormatObj.format('132617.07'); format[0] = value.charAt(3); format[1] = value.charAt(7); return format; }; /** * * @param {type} value * @param {type} fractionFormat * @returns {Boolean} */ hasDecimal = function(value, fractionFormat) { value = value.trim(); if (isNull(value) || isNull(fractionFormat)) { return false; } if (value.indexOf(fractionFormat) >= 1) { return true; } }; /** * * @param {type} event * @param {type} locale * @returns {Boolean} */ isNumber = function(event, locale) { var keyCode = event.which ? event.which : event.keyCode; // Validating if user has pressed shift character if (keyCode === 16) { return false; } if (isNumberKey(keyCode)) { return true; } var numberFormatter = [32, 110, 188, 190]; if (keyCode === 32 && isNull(getNumberFormat(locale)[0]) === isNull(getFormat(keyCode))) { return true; } if (numberFormatter.indexOf(keyCode) >= 0 && getNumberFormat(locale)[0] === getFormat(keyCode)) { return true; } return false; }; /** * * @param {type} event * @param {type} locale * @returns {Boolean} */ isDecimal = function(event, locale) { var keyCode = event.which ? event.which : event.keyCode; // Validating if user has pressed shift character if (keyCode === 16) { return false; } if (isNumberKey(keyCode)) { return true; } var numberFormatter = [32, 110, 188, 190]; if (keyCode === 32 && isNull(getNumberFormat(locale)[0]) === isNull(getFormat(keyCode))) { return true; } if (numberFormatter.indexOf(keyCode) >= 0 && (getNumberFormat(locale)[0] === getFormat(keyCode) || getNumberFormat(locale)[1] === getFormat(keyCode))) { return true; } return false; }; /** * * @param {type} keyCode * @returns {Boolean} */ isNumberKey = function(keyCode) { if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105)) { return true; } var keys = [8, 9, 13, 35, 36, 37, 39, 45, 46, 109, 144, 173, 189]; if (keys.indexOf(keyCode) !== -1) { return true; } return false; }; /** * * @param {type} keyCode * @returns {JSON@call;parse.numberFormatter.value|String} */ getFormat = function(keyCode) { var jsonString = '{"numberFormatter" : [{"key":"32", "value":" ", "description":"space"}, {"key":"188", "value":",", "description":"comma"}, {"key":"190", "value":".", "description":"dot"}, {"key":"110", "value":".", "description":"dot"}]}'; var jsonObject = JSON.parse(jsonString); for (var key in jsonObject.numberFormatter) { if (jsonObject.numberFormatter.hasOwnProperty(key) && keyCode === parseInt(jsonObject.numberFormatter[key].key)) { return jsonObject.numberFormatter[key].value; } } return ''; }; /** * * @type String */ var jsonString = '{"shiftCharacterNumberMap" : [{"char":")", "number":"0"}, {"char":"!", "number":"1"}, {"char":"@", "number":"2"}, {"char":"#", "number":"3"}, {"char":"$", "number":"4"}, {"char":"%", "number":"5"}, {"char":"^", "number":"6"}, {"char":"&", "number":"7"}, {"char":"*", "number":"8"}, {"char":"(", "number":"9"}]}'; /** * * @param {type} value * @returns {JSON@call;parse.shiftCharacterNumberMap.number|String} */ getShiftCharSpecificNumber = function(value) { var jsonObject = JSON.parse(jsonString); for (var key in jsonObject.shiftCharacterNumberMap) { if (jsonObject.shiftCharacterNumberMap.hasOwnProperty(key) && value === jsonObject.shiftCharacterNumberMap[key].char) { return jsonObject.shiftCharacterNumberMap[key].number; } } return ''; }; /** * * @param {type} value * @returns {Boolean} */ isShiftSpecificChar = function(value) { var jsonObject = JSON.parse(jsonString); for (var key in jsonObject.shiftCharacterNumberMap) { if (jsonObject.shiftCharacterNumberMap.hasOwnProperty(key) && value === jsonObject.shiftCharacterNumberMap[key].char) { return true; } } return false; }; /** * * @param {type} element * @returns {undefined} */ updateField = function(element) { var value = element.value; for (var index = 0; index < value.length; index++) { if (!isShiftSpecificChar(value.charAt(index))) { continue; } element.value = value.replace( value.charAt(index), getShiftCharSpecificNumber(value.charAt(index))); } }; /** * * @param {type} value * @param {type} element * @param {type} params */ jQuery.validator.addMethod('numberExceedsMaxLimit', function(value, element, params) { value = parseInt(parseNumber(value, params)); if (value.toString().length > numericMaxLimit) { showErrorMessage(element.id, false, null); setFocus(element.id); return false; } return true; }, 'Exceeding the maximum limit of 13 digits. Example: 1234567890123.'); /** * * @param {type} value * @param {type} element * @param {type} params */ jQuery.validator.addMethod('decimalExceedsMaxLimit', function(value, element, params) { value = parseFloat(parseDecimal(value, params)).toFixed(2); if (value.toString().substring( 0, value.toString().lastIndexOf('.')).length > numericMaxLimit || value.toString().length > decimalMaxLimit) { showErrorMessage(element.id, false, null); setFocus(element.id); return false; } return true; }, 'Exceeding the maximum limit of 16 digits. Example: 1234567890123.00.'); /** * @param {type} id * @param {type} locale * @returns {boolean} */ isNumberExceedMaxLimit = function(id, locale) { var value = parseInt(parseNumber( document.getElementById(id).value, locale)); if (value.toString().length > numericMaxLimit) { setFocus(id); return true; } return false; }; /** * @param {type} id * @param {type} locale * @returns {boolean} */ isDecimalExceedsMaxLimit = function(id, locale) { var value = parseFloat(parseDecimal( document.getElementById(id).value, locale)).toFixed(2); if (value.toString().substring( 0, value.toString().lastIndexOf('.')).length > numericMaxLimit || value.toString().length > decimalMaxLimit) { setFocus(id); return true; } return false; };

您可以使用这种方式格式化您需要的货币。

 var xx = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 2, maximumFractionDigits: 2 }); xx.format(123456.789); // '$123,456.79' 

有关详细信息,您可以访问此链接。

https://www.justinmccandless.com/post/formatting-currency-in-javascript/

 var input=950000; var output=parseInt(input).toLocaleString(); alert(output);