You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改jQuery代码实现表单金额按分自动格式化且提交时不带符号

实现分单位金额格式化的修改方案

你需要的是将输入值默认按「分」为单位处理,展示时自动换算为「元」,添加千分符且保留两位小数,表单提交时自动清除格式返回纯数字,修改方案如下:


一、修改后可直接使用的代码

JS逻辑代码

// 输入时自动格式化展示
$('input.number').keyup(function(event) {
  // 跳过方向键,不影响光标移动操作
  if(event.which >= 37 && event.which <= 40) return;

  $(this).val(function(index, value) {
    // 第一步:提取输入内容中的纯数字,清除所有格式符号
    const numStr = value.replace(/\D/g, '');
    if (!numStr) return '';

    // 第二步:拆分整数部分(单位:元)和小数部分(单位:分)
    const integerPart = numStr.length > 2 ? numStr.slice(0, -2) : '0';
    const decimalPart = numStr.slice(-2).padStart(2, '0');

    // 第三步:给整数部分添加千分符
    const formattedInteger = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, ',');

    // 拼接返回最终前端展示格式
    return `${formattedInteger}.${decimalPart}`;
  });
});

// 表单提交前自动清除格式,仅提交纯数字内容
$('form').submit(function() {
  $('input.number').val(function(index, value) {
    return value.replace(/\D/g, '');
  });
  return true;
});

对应HTML代码

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<form>
  <input class="number" type="text">
  <button type="submit">提交</button>
</form>

二、效果验证

所有你要求的场景都可以正常覆盖:

  • 输入100 → 展示为1.00
  • 输入1000 → 展示为10.00
  • 输入10000 → 展示为100.00
  • 输入100000 → 展示为1,000.00
  • 输入不足2位的内容(比如输入5)→ 自动补位为0.05,符合分单位的展示规则

三、原正则逻辑说明

你之前看不懂的千分符正则/\B(?=(\d{3})+(?!\d))/g原理很简单:

  • \B匹配非单词边界,避免在数字最前面插入逗号
  • (?=(\d{3})+(?!\d))是正向预查规则,匹配「后面的数字刚好可以3个一组划分到末尾」的位置
  • 全局匹配所有符合条件的位置插入逗号,就实现了千分符效果

内容的提问来源于stack exchange,提问作者ricard0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:57:03