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

ASP.Net MVC中基于JQuery实现特定TD下文本框数字格式化的问题求助

解决ASP.NET MVC中jQuery数字格式化不生效的问题

看起来你的核心问题是输入框失去焦点后数字格式化未生效,还需要覆盖表单保存时的格式化场景。咱们一步步来排查和解决:

问题根源分析

  1. 你之前的代码直接传入this.value给$.myFormat.format(),但this.value是字符串类型,而你的格式化方法可能需要数值类型的参数(比如示例里$.myFormat.format(232038232233)传入的是数字)。如果用户输入的是纯数字字符串、带逗号的旧值,格式化方法可能无法正确解析。
  2. 你提到控制台查看this显示旧值——其实this指向的是input元素本身,你需要打印this.value才能看到当前输入的内容,之前的判断可能有误。
  3. 原input元素带有dataorigvalue属性,格式化后没有同步更新,可能导致数据不一致。

解决方案

我们先写一个通用的格式化工具函数,再分别绑定focusout和表单submit事件,确保两种场景都能生效:

1. 通用格式化函数

这个函数负责清理输入值、转换类型、应用格式化,并同步更新相关属性:

function formatNumericInput(inputElement) {
    // 第一步:清理输入值,移除所有非数字和小数点的字符
    const rawInput = $(inputElement).val().replace(/[^0-9.]/g, '');
    // 处理多个小数点的情况(只保留第一个)
    const cleanedInput = rawInput.replace(/(\..*)\./g, '$1');
    // 第二步:转换为数值,空值则设为0
    const numericValue = cleanedInput ? Number(cleanedInput) : 0;
    // 第三步:应用你的格式化方法
    const formattedValue = $.myFormat.format(numericValue);
    // 第四步:更新输入框值和dataorigvalue属性
    $(inputElement).val(formattedValue);
    $(inputElement).attr('dataorigvalue', formattedValue);
}

2. 绑定事件

在document.ready里绑定失去焦点和表单提交事件:

$(document).ready(function () {
    // 绑定focusout事件:失去焦点时格式化
    $('tr td[id*=myId] input[type=text].numeric').on('focusout', function () {
        formatNumericInput(this);
    });

    // 绑定表单submit事件:保存前统一格式化所有目标输入框
    $('form').on('submit', function () {
        $('tr td[id*=myId] input[type=text].numeric').each(function () {
            formatNumericInput(this);
        });
        // 返回true允许表单提交,如需验证可在这里添加逻辑
        return true;
    });
});

额外说明

  • 我在选择器里加上了.numeric类,这样可以更精准地定位需要格式化的输入框(你的示例input带有这个类),避免误处理其他文本框。
  • 如果你的$.myFormat.format()方法本身支持字符串转数值,那清理步骤可以简化,但保留清理逻辑能避免用户输入非数字字符导致的异常。
  • 测试时可以在formatNumericInput里加console.log(numericValue),确认传给格式化方法的是正确的数值类型。

内容的提问来源于stack exchange,提问作者The Inquisitive Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 13:47:35