MVC 3 jQuery Validation/globalizing of number/decimal field MVC 3 jQuery Validation/globalizing of number/decimal field jquery jquery

MVC 3 jQuery Validation/globalizing of number/decimal field


You could try the jQuery Globalization plugin from Microsoft:

<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script><script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script><script src="@Url.Content("~/Scripts/jquery.glob.js")" type="text/javascript"></script><script src="@Url.Content("~/Scripts/globinfo/jquery.glob.da-dk.js")" type="text/javascript"></script><script type="text/javascript">    $.validator.methods.number = function (value, element) {        return !isNaN($.parseFloat(value));    }    $(function () {        $.preferCulture('da-DK');    });</script>

Plugin was renamed and moved, you should use Globalize (Mar 2012)

<script src="@Url.Content("~/Scripts/jquery.globalize/globalize.js")" type="text/javascript"></script><script src="@Url.Content("~/Scripts/jquery.globalize/cultures/globalize.culture.da-DK.js")" type="text/javascript"></script><script type="text/javascript">    $.validator.methods.number = function (value, element) {        return !isNaN(Globalize.parseFloat(value));    }    $(document).ready(function () {        Globalize.culture('da-DK');    });</script>

more about this on Scott Hanselman blog post



Updated script for current version of https://github.com/jquery/globalize with optional elements support

$.validator.methods.number = function (value, element) {   return this.optional(element) || !isNaN(Globalize.parseFloat(value));}$(function () {    Globalize.culture('%%culture%%');});


@shatl has the right answer as of today. Note for the range attribute you'll need a hack shown below. The complete code to add is shown below:

@section Scripts {    @Scripts.Render("~/bundles/jqueryval")    <script type="text/javascript" src="~/Scripts/globalize.js"></script>    <script type="text/javascript" src="~/Scripts/globalize.culture.fr-FR.js"></script>    <script type="text/javascript">        $.validator.methods.number = function (value, element) {            return this.optional(element) ||                !isNaN(Globalize.parseFloat(value));        }        $(document).ready(function () {            Globalize.culture('fr-FR');        });        jQuery.extend(jQuery.validator.methods, {                range: function (value, element, param) {                        //Use the Globalization plugin to parse the value                        var val = $.global.parseFloat(value);                return this.optional(element) || (                    val >= param[0] && val <= param[1]);            }        });    </script>}