HTML数字字段toLocalString不起作用

时间:2019-01-01 04:45:55

标签: javascript jquery

我有一个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">

用户输入为美国格式

3 个答案:

答案 0 :(得分:2)

请使用“ 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>

答案 1 :(得分:1)

是的,当然。 input:type=number不是一个好的选择,它只能接受通用格式,但是您的格式很少见。

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

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

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

答案 2 :(得分:0)

var formatter = new Intl.NumberFormat('de-DE', {
    minimumFractionDigits: 2
});
console.log("Output: "+formatter.format(sum));

这对我来说很好。