1

ローカルの 10 進数 (ポルトガル語 -> pt-PT) を検証しようとしていますが、ブラウザーにコンソール エラーが表示されます。

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

ポルトガルでは、小数点記号は「,」であるため、ここで有効な 10 進数は「10,21」です。

グローバリゼーションをロードするために使用するスクリプト:

$.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");
    });

ビューでは、目立たない検証を使用します。

<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>

すべてのライブラリをロードするには、Shared/Layout ファイルを使用します。

<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>
4

1 に答える 1

4

この問題は、jQuery Validation Globalize Library のバージョンに関連していました。

まだ parseFloat メソッドを使用していたバージョン 1.0.1 を使用していました。

このメソッドは Globalize v1.0.0 では使用できなくなり、Globalize.parseNumber メソッドに置き換えられました。

バージョン 1.1.0 に更新した後、すべてが正常に動作するようになりました。

于 2016-01-19T16:15:25.693 に答える