I would like to add suffix to the number with % instead of the current ₹ symbol in the front and also remove the .00 decimal points too. So the result shows as 9% instead of ₹9.00
I am not sure if one could modify this script to suit my needs. Here's my code:
$('.percent').each(function() {
var monetary_value = $(this).text();
if ($.isNumeric(monetary_value) && (monetary_value < 100 || monetary_value.length == 2)) {
var i = new Intl.NumberFormat('en-IN', {
style: 'currency',
currency: 'INR'
}).format(monetary_value);
}
$(this).text(i);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<div >9</div>
Demo JSFiddle: http://jsfiddle.net/4p98aw6u/
CodePudding user response:
To do what you require simply remove the usage of Intl.NumberFormat()
and instead append the %
character to the end of the value.
Also note the explicit conversion of the val()
to an integer using parseInt()
before being used in any comparisons.
$('.percent').each(function() {
var monetary_value = parseInt($(this).text(), 10);
var i;
if (monetary_value && (monetary_value < 100 || monetary_value.length == 2)) {
i = monetary_value '%';
}
$(this).text(i);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<div >9</div>
CodePudding user response:
A regular expression might be the simplest way to do the job, depending on the input
const monetary_value = $(this).text(); // ₹9.00
const converted_value = monetary_value.match(/\d ?./)[1] "%"
See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match particularly since you should add some error checking to the above for when the match is null