我有以下代码。在文本输入字段中,如何才能使逗号适当地添加到数字中?例如,不是说“1000”而是说“1000”。或者作为另一个例子,如果我输入“1000000”使其说“1,000,000”。不幸的是JS不是我的强者。 提前谢谢!
function priceCalculation(a){
if(a <= 10000){
return 0.00099;
}else if(a >= 10001 && a <= 25000 ){
return 0.00095;
}else if(a >= 25001 && a <= 50000 ){
return 0.00089;
}else if(a >= 50001 && a <= 100000 ){
return 0.00075;
}else{
return 0.00075;
}
}
$('#likecount').keyup(function(){
var price = priceCalculation($(this).val());
console.log(price)
var total = $(this).val() * price;
$('#output').text(total.toFixed(2));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" id="likecount" />
<p style="padding: 20px 0px; font-weight: bold; color: #222; ">Your Cost: <b><span> $</span><span id="output" style="color: #004f04;"></span></b></p>
答案 0 :(得分:1)
您可以使用函数toLocaleString(),它将确保最终的数字看起来像您想要的那样:
console.log((1000000).toLocaleString())
console.log((123456.321).toLocaleString())
console.log((123.3212).toLocaleString())
console.log((1234.56).toLocaleString())
&#13;
答案 1 :(得分:1)
您可以使用:
var profits=2489.8237 profits.toFixed(3) //returns 2489.824 (round up) profits.toFixed(2) //returns 2489.82 profits.toFixed(7) //returns 2489.8237000 (padding)
然后你可以添加'$'的标志。
如果你需要',',千万可以使用:
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 = String(parseInt(n = Math.abs(Number(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) : ""); };
并将其用于:
(123456789.12345).formatMoney(2, '.', ',');
如果你总是要使用'。'和',',你可以将它们从方法调用中移除,该方法将默认为你。
(123456789.12345).formatMoney(2);
如果您的文化中有两个符号被翻转(即欧洲人),只需在格式的方法中粘贴以下两行:
d = d == undefined ? "," : d, t = t == undefined ? "." : t,
答案 2 :(得分:1)
使用ECMAScript 6
的数字格式(see here),您可以这样做:
更新的脚本:
function priceCalculation(a){
if(a <= 10000){
return 0.00099;
}else if(a >= 10001 && a <= 25000 ){
return 0.00095;
}else if(a >= 25001 && a <= 50000 ){
return 0.00089;
}else if(a >= 50001 && a <= 100000 ){
return 0.00075;
}else{
return 0.00075;
}
}
// number format set to en-US e.g (from 1500 to 1,500)
var numFormat = new Intl.NumberFormat("en-US");
$('#likecount').keyup(function(e){
// if a '.' is pressed
if($(this).val().endsWith('.')) {
return;
}
// if input value is empty then assign '0' else the original value
var inputVal = $(this).val() === ''?'0':$(this).val();
// replace the ',' to '' so we won't get a NaN result
// on arithmetic operations
inputVal = parseFloat(inputVal.replace(/[$|,]/g, ''));
var price = priceCalculation(parseInt(inputVal));
var total = inputVal * price;
var formatted = numFormat.format(inputVal) // set format to input
$(this).val(formatted); // display the formatted input back
$('#output').text(numFormat.format(total)); // display the total price
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="likecount" />
<p style="padding: 20px 0px; font-weight: bold; color: #222; ">Your Cost: <b><span> $</span><span id="output" style="color: #004f04;"></span></b></p>
&#13;