.Net MVC 项目上的本地编号全球化错误
Globalize error with local numbers on .Net MVC Project
我正在尝试验证本地十进制数(葡萄牙语 -> pt-PT),但我在浏览器中收到控制台错误:
Uncaught TypeError: t.parseFloat is not a function. Exception occurred when checking element SizeOpenedWidth, check the 'number' method.
在葡萄牙,小数点分隔符是“,”,因此这里的有效十进制数是“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");
});
在 View 上我使用了不显眼的验证:
<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>
问题与 jQuery Validation Globalize Library 版本有关。
我使用的是 1.0.1 版本,仍然使用 parseFloat 方法。
此方法在 Globalize v1.0.0 中不再可用,已替换为方法 Globalize.parseNumber。
更新到1.1.0版本后,一切开始正常工作。
我正在尝试验证本地十进制数(葡萄牙语 -> pt-PT),但我在浏览器中收到控制台错误:
Uncaught TypeError: t.parseFloat is not a function. Exception occurred when checking element SizeOpenedWidth, check the 'number' method.
在葡萄牙,小数点分隔符是“,”,因此这里的有效十进制数是“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");
});
在 View 上我使用了不显眼的验证:
<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>
问题与 jQuery Validation Globalize Library 版本有关。
我使用的是 1.0.1 版本,仍然使用 parseFloat 方法。
此方法在 Globalize v1.0.0 中不再可用,已替换为方法 Globalize.parseNumber。
更新到1.1.0版本后,一切开始正常工作。