【问题标题】:formatting money with jquery用 jquery 格式化钱
【发布时间】:2023-03-27 04:39:01
【问题描述】:

我写了这个小sn-p,它应该格式化货币,但由于某种原因它在这个期间失败了。它每次都会添加它们......知道为什么以及是否有更好的方法来做到这一点

$(".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");
    }
});

【问题讨论】:

  • indexOf 如果未找到该字符串,则返回 -1
  • 您正在检查 .不为0,即在值的LHS上。这只会匹配.50 之类的东西,我怀疑你只是想检查一个 .存在,在这种情况下只需检查 `indexOf('.') != -1`

标签: javascript jquery


【解决方案1】:

我编写了一个不同的美元格式 sn-p,它将接受任何数字(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);
    }
});

See it in action here.

【讨论】:

    【解决方案2】:

    你可以看看jquery globalization plugin

    【讨论】:

      【解决方案3】:

      “indexOf”函数将索引返回到字符串中。我认为您应该测试一下结果是否小于零。

      if ($(this).val().indexOf("$") < 0) {
          $(this).val("$" + $(this).val());
      } 
      if ($(this).val().indexOf(".") < 0){
          $(this).val($(this).val() + ".00");
      

      edit 哎呀——我倒过来了 :-) 小于零,不大于或等于。后者是您要查明字符 is 是否在字符串中,但您的代码需要知道它何时 不在 在字符串中。

      【讨论】:

      • @Tamer:你在搜索 $ 时侥幸逃脱,因为 $ 可能是数组中的第一个字符,在位置 0。小数点可能在很多位置,0 或更大。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      相关资源
      最近更新 更多