全球化误差与净MVC项目本地号码 [英] Globalize error with local numbers on .Net MVC Project

查看:123
本文介绍了全球化误差与净MVC项目本地号码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想验证本地十进制数(葡萄牙语 - > PT-PT),但我得到在浏览器控制台错误:

 未捕获类型错误:t.parseFloat不是一个函数。发生异常检查元素SizeOpenedWidth时,选中数字的方法。

在葡萄牙,小数点分隔符是,,所以一个有效的十进制数这里是10,21。

我使用的脚本加载全球化:

  $。当(
        $ .getJSON(/脚本/ CLDR /补充/ likelySubtags.json),
        $ .getJSON(/脚本/ CLDR /主/ numbers.json),
        $ .getJSON(/脚本/ CLDR /主/ CA-gregorian.json),
        $ .getJSON(/脚本/ CLDR /补充/ timeData.json)
    )。然后(函数(){        //规范化$。获得的结果,我们只需要在JSON,而不是请求状态。
        返回[] .slice.apply(参数,[0]).MAP(功能(结果){
            返回结果[0];
        });    }),然后(Globalize.l​​oad)。然后(函数(){        Globalize.l​​ocale(PT-PT);
    });

在View我用不显眼的验证:

 < D​​IV CLASS =表单组>
    @ Html.LabelFor(型号=> model.SizeOpenedWidth,htmlAttributes:新{@class =控制标签COL-MD-3})
    < D​​IV CLASS =COL-MD-3>
        < D​​IV CLASS =输入组>
            @ Html.EditorFor(型号=> model.SizeOpenedWidth,新{htmlAttributes = {新@class =表格控}})
            @ Html.ValidationMessageFor(型号=> model.SizeOpenedWidth,新{@class =TEXT-危险})
        < / DIV>
    < / DIV>
< / DIV>

要加载所有的图书馆,我使用共享/布局文件:

 <脚本的src =/脚本/ jQuery的/ jQuery的-2.1.4.js>< / SCRIPT><脚本的src =/脚本/ cldr.js>< / SCRIPT>
<脚本的src =/脚本/ CLDR / event.js>< / SCRIPT>
<脚本的src =/脚本/ CLDR / supplemental.js>< / SCRIPT>
<脚本的src =/脚本/ CLDR / unresolved.js>< / SCRIPT>
<脚本的src =/脚本/ globalize.js>< / SCRIPT>
<脚本的src =/脚本/全球化/ number.js>< / SCRIPT>
<脚本的src =/脚本/全球化/ date.js>< / SCRIPT><脚本的src =/脚本/ moment.min.js>< / SCRIPT>
<脚本的src =/脚本/力矩与 - locales.min.js>< / SCRIPT><脚本的src =/脚本/引导/ bootstrap.js>< / SCRIPT>
<脚本的src =/脚本/响应/ respond.js>< / SCRIPT><脚本的src =/脚本/ jQuery的/ jquery.validate.min.js>< / SCRIPT>
<脚本的src =/脚本/ jQuery的/ jquery.validate.globalize.min.js>< / SCRIPT>
<脚本的src =/脚本/ jQuery的/ jquery.validate.unobtrusive.min.js>< / SCRIPT><脚本的src =/脚本/引导-datetimepicker.js>< / SCRIPT>


解决方案

的问题与jQuery验证图书馆全球化时代与版本相关的。

我使用的是仍然使用parseFloat方法的版本1.0.1。

此方法已不存在与Globalize的V1.0.0,它已被替换的方法Globalize.parseNumber

更新到1.1.0版本后,一切开始正常工作。

I am trying to validate local decimal numbers (Portuguese -> pt-PT) but I get a console error in the Browser:

Uncaught TypeError: t.parseFloat is not a function.  Exception occurred when checking element SizeOpenedWidth, check the 'number' method.

In Portugal, the decimal separator is the ",", so a valid decimal number here is "10,21".

The script I use to load Globalization:

$.when(
        $.getJSON("/Scripts/cldr/supplemental/likelySubtags.json"),
        $.getJSON("/Scripts/cldr/main/numbers.json"),
        $.getJSON("/Scripts/cldr/main/ca-gregorian.json"),
        $.getJSON("/Scripts/cldr/supplemental/timeData.json")
    ).then(function () {

        // Normalize $.get results, we only need the JSON, not the request statuses.
        return [].slice.apply( arguments, [ 0 ] ).map(function( result ) {
            return result[ 0 ];
        });

    }).then( Globalize.load ).then(function() {

        Globalize.locale("pt-PT");
    });

On the View I use unobtrusive validation:

<div class="form-group">
    @Html.LabelFor(model => model.SizeOpenedWidth, htmlAttributes: new { @class = "control-label col-md-3" })
    <div class="col-md-3">
        <div class="input-group">
            @Html.EditorFor(model => model.SizeOpenedWidth, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.SizeOpenedWidth, "", new { @class = "text-danger" })
        </div>
    </div>
</div>

To load all the libraries, I use the Shared/Layout file:

<script src="/Scripts/jquery/jquery-2.1.4.js"></script>

<script src="/Scripts/cldr.js"></script>
<script src="/Scripts/cldr/event.js"></script>
<script src="/Scripts/cldr/supplemental.js"></script>
<script src="/Scripts/cldr/unresolved.js"></script>
<script src="/Scripts/globalize.js"></script>
<script src="/Scripts/globalize/number.js"></script>
<script src="/Scripts/globalize/date.js"></script>

<script src="/Scripts/moment.min.js"></script>
<script src="/Scripts/moment-with-locales.min.js"></script>

<script src="/Scripts/bootstrap/bootstrap.js"></script>
<script src="/Scripts/respond/respond.js"></script>

<script src="/Scripts/jquery/jquery.validate.min.js"></script>
<script src="/Scripts/jquery/jquery.validate.globalize.min.js"></script>
<script src="/Scripts/jquery/jquery.validate.unobtrusive.min.js"></script>

<script src="/Scripts/bootstrap-datetimepicker.js"></script>

解决方案

The problem was related with the jQuery Validation Globalize Library version.

I was using the version 1.0.1 that was still using the parseFloat method.

This method is not available anymore with Globalize v1.0.0, it has been replaced with the method Globalize.parseNumber.

After updating to version 1.1.0, everything started to work properly.

这篇关于全球化误差与净MVC项目本地号码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆