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

如何设置ag-grid输入框仅允许输入0.00~100.00范围的十进制数值

ag-grid 可编辑百分比单元格小数输入实现方案

核心配置调整

你需要修改百分比列的colDef(列定义)配置,替换原有整数输入的相关参数,完整配置示例如下:

// 百分比列定义
const percentColumnDef = {
  field: 'percent',
  headerName: '百分比',
  editable: true,
  // 指定使用ag-grid自带的数值编辑器
  cellEditor: 'agNumberCellEditor',
  cellEditorParams: {
    min: 0, // 最小值限制
    max: 100, // 最大值限制
    step: 0.01, // 步长设为0.01,支持两位小数调整
    precision: 2 // 强制保留两位小数
  },
  // 格式化展示:无论输入什么,最终展示为两位小数格式
  valueFormatter: (params) => {
    if (!params.value && params.value !== 0) return '';
    return Number(params.value).toFixed(2);
  },
  // 输入值解析+合法性校验
  valueParser: (params) => {
    const inputNum = parseFloat(params.newValue);
    // 非法值、超出范围值直接返回旧值,不生效
    if (isNaN(inputNum) || inputNum < 0 || inputNum > 100) {
      return params.oldValue;
    }
    // 合法值保留两位小数后返回
    return Number(inputNum.toFixed(2));
  },
  // 键盘输入拦截,避免输入数字、小数点之外的非法字符
  cellKeyPress: (params) => {
    const inputChar = String.fromCharCode(params.event.charCode);
    const currentInput = params.event.target.value;
    // 仅允许输入数字和小数点,且小数点只能出现一次
    if (!/[0-9.]/.test(inputChar) || (inputChar === '.' && currentInput.includes('.'))) {
      params.event.preventDefault();
      return false;
    }
    return true;
  }
}

问题排查

如果配置后还是只能输入整数,优先检查两个配置项:

  • 是不是之前的cellEditorParams中设置了precision: 0或者step:1,删除原有配置替换为上述参数即可
  • 是不是自定义了编辑器逻辑,修改对应编辑器的数值校验规则即可

内容的提问来源于stack exchange,提问作者Rajesh Kumar Duraisamy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:57:05