jQuery提交带空格数值时前端计算显示与数据库结果不一致问题
问题原因
$.trim() 只能移除字符串首尾的空格,无法处理数字中间的千位分隔空格。你输入的10 000经过parseInt解析时,遇到中间的空格会直接终止解析,最终只拿到数值10,因此前端计算结果错误。而PHP端你调用了remove_space()处理了提交的金额参数,所以数据库存储的数值是正确的,问题完全出在前端回调的计算逻辑。
解决方案
1. 前端取值时移除所有空格
将输入值里的所有空格全局替换为空,再做后续计算和提交,修改原jQuery代码中的取值逻辑:
// 原代码:var money = $('#number_bank').val(); // 修改为: var money = $('#number_bank').val().replace(/\s/g, '');
正则/\s/g会匹配字符串中所有的空格字符,全局替换后就能得到不带空格的纯数字字符串。
2. 优化parseInt解析逻辑
给parseInt加上第二个参数10,指定按十进制解析,避免部分场景下出现的八进制解析异常:
var money_in_bank = parseInt(<?php echo AS_session_row($_SESSION['ID'], 'AS_bankmoney', $pdo) ?>, 10) + parseInt(money, 10); var money_on_hand = parseInt(<?php echo AS_session_row($_SESSION['ID'], 'AS_money', $pdo) ?>, 10) - parseInt(money, 10);
可选优化
可以给输入框绑定input事件,实时过滤非数字字符、自动格式化千位分隔符,避免用户输入非法字符,降低后续处理出错概率。
内容的提问来源于stack exchange,提问作者rawohah211
相关产品推荐
相关产品推荐

