如何修改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
相关产品推荐
相关产品推荐

