使用 jquery 格式化金钱
2011-03-08
2349
我写了这段代码来格式化货币,但由于某种原因,它在句号上失败了。每次它都会不断添加它们……知道为什么吗?有没有更好的方法?
$(".dollar").blur(function() {
var curval = $(this).val();
if ($(this).val().indexOf("$") != 0) {
$(this).val("$" + $(this).val());
}
if ($(this).val().indexOf(".") != 0){
$(this).val($(this).val() + ".00");
}
});
3个回答
我编写了一个不同的美元格式化代码片段,它可以接受任意数字(1、1.6、2.52、8.2472)并自动将其格式化为美元符号($1.00、$1.60、$2.52、$8.24):
$('.dollars').blur(function(e){
var curVal = parseFloat($(this).val()),
curInt = parseInt(curVal, 10),
curDec = parseInt(curVal*100, 10) - parseInt(curInt*100, 10);
curDec = (curDec < 10) ? "0" + curDec : curDec;
if (!isNaN(curInt) && !isNaN(curDec)) {
$(this).val("$"+curInt+"."+curDec);
}
});
mVChr
2011-03-08
您可以查看 jquery 全球化插件 。
Darin Dimitrov
2011-03-08
“indexOf”函数返回字符串中的索引。我认为您应该测试结果是否小于零。
if ($(this).val().indexOf("$") < 0) {
$(this).val("$" + $(this).val());
}
if ($(this).val().indexOf(".") < 0){
$(this).val($(this).val() + ".00");
edit 哎呀 — 我搞反了 :-) 小于零,而不是大于或等于。后者是您用来查明字符是否 在 字符串中的方法,但您的代码需要知道它何时 不在 字符串中。
Pointy
2011-03-08