Javascript 为什么我的parseFloat只允许将高达1.00到999.00的条目发回服务器

Javascript 为什么我的parseFloat只允许将高达1.00到999.00的条目发回服务器,javascript,model-view-controller,Javascript,Model View Controller,所以我有一个MVC表单字段 @Html.TextBoxFor(model => model.Cost, new { placeholder = "Cost $XXX,XXX.XX", @class = "input-box-med" }) 现场模型。成本定义为: public Nullable<decimal> Cost { get; set; } 但当我发回时,只会发布从1.00到999.00之间输入的数字。高于此值的任何内容都将

所以我有一个MVC表单字段

@Html.TextBoxFor(model => model.Cost, new { placeholder = "Cost $XXX,XXX.XX", @class = "input-box-med" })
现场模型。成本定义为:

 public Nullable<decimal> Cost { get; set; }
但当我发回时,只会发布从1.00到999.00之间输入的数字。高于此值的任何内容都将作为空值发回

下面是一个输入示例:1000.00


如果一个数字有逗号,你的服务器会抓狂吗?我猜问题在于代码将其定义为一个数字,但您将其设置为一个带逗号的字符串。我怀疑“,”可能是罪魁祸首。请举例说明您是如何输入数字“1000”的,并确认该特定示例也显示为“空”。请尝试使用/不使用逗号,并告诉我们发生了什么。正如@epascarello所指出的,在该语言环境中,大于999的数字很可能被格式化为逗号(
1234.56
)。请记住,
tolocalString
返回一个字符串(我知道名称是这样说的,但仍然如此)。@epascarello那么,你是对的,这就是问题所在,问题是,我如何不返回逗号,或者我如何在返回时解析它们?你调用的是
tolocalString
,它就是这样做的。你去掉逗号,然后把它们加回去。
// Currency Cast
        $('#Cost').on('blur', function () {
            const value = this.value.replace(/,/g, '');
            this.value = parseFloat(value).toLocaleString('en-US', {
                style: 'decimal',
                maximumFractionDigits: 2,
                minimumFractionDigits: 2
        });
        });