HTML 数字字段 toLocalString 不起作用

Posted

技术标签:

【中文标题】HTML 数字字段 toLocalString 不起作用【英文标题】:HTML number field toLocalString not working 【发布时间】:2019-01-01 04:45:55 【问题描述】:

我有一个 html 数字字段。分配的该字段值引发以下错误

The specified value "101,5" is not a valid number. The value must match to the following regular expression: -?(\d+|\d+\.\d+|\.\d+)([eE][-+]?\d+)?

我需要一个值来转换为french 格式(de-DE)。 我的尝试是

var dispersePercentageInput = $('.disperse-percentage');
var percentage = 101.5
dispersePercentageInput.val(Number(percentage).toLocaleString('de-DE'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="number" name="etude_disbursement_rate" value="100.00" class="disperse-percentage required" step="0.01" data-prefix="-" required="" id="id_etude_disbursement_rate" title="S'il vous plaît remplissez cet champ">

我期望值​​为101,5,但它显示The specified value "101,5" is not a valid number.

我的输入字段是

<input type="number" name="etude_disbursement_rate" value="100.00" class="disperse-percentage required" step="0.01" data-prefix="-" required="" id="id_etude_disbursement_rate" title="S'il vous plaît remplissez cet champ">

en-US 格式的用户输入

【问题讨论】:

对我来说工作得很好,你能在 sn-p 中重现吗? 我使用的是jQuery v1.11.2 版本。这会产生错误吗? 不,和jquery版本无关。 您的实际输入 HTML 是什么样的?和马蒙加的一样吗? 我可以在控制台中看到想要的值。但它不会显示在输入字段中。 【参考方案1】:

请使用“autoNumeric.min.js”

<script src="~/Scripts/autoNumeric/autoNumeric.min.js" type="text/javascript"></script>

在 HTML 文件中添加输入标签:

 <input type="text" class="form-control" id="numberint" data-a-dec="," data-a-sep="." data-a-sign="">

脚本代码:

<script type="text/text/javascript">
 $(function() 
    $('#numberint').autoNumeric('init');   
 );
</script>

【讨论】:

【参考方案2】:

是的,当然。 input:type=number 不是个好选择,只能接受普通格式,但是你的格式很不常用。

number类型还有一些其他的缺陷,比如

    在不同的浏览器中表现不尽相同 允许多个. 允许字母e

我建议只使用text 类型,并通过RegExp 或其他方式检查格式

【讨论】:

【参考方案3】:
var formatter = new Intl.NumberFormat('de-DE', 
    minimumFractionDigits: 2
);
console.log("Output: "+formatter.format(sum));

这对我来说很好用。

【讨论】:

以上是关于HTML 数字字段 toLocalString 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Number.toLocalString() js

js字符串每个数组前面数字转换为多少个数组

js中toLocalString()toString()和valueOf()方法

JS中toString()和toLocalString()的区别

数组中的toString,toLocalString,valueOf方法有啥区别

Angular2 - 仅接受数字的输入字段