Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

113
Views
MVC 3 jQuery Validación/globalización de número/campo decimal

Cuando se usa cultura de globalización="da-DK" en el archivo Web.config, la validación de jQuery no funciona.

En Dinamarca, usamos la notación 19,95 en lugar de la forma estadounidense 19,95 cuando escribimos el precio de un producto, y eso me ha dado un problema que no puedo resolver.

Inicié VS2010, nuevo proyecto MVC 3, agregué un controlador de inicio, una clase de producto y una vista de edición estándar simple y el error ya está allí.

Clase de producto:

 public class Product { public string name { get; set; } public string itemNo { get; set; } public decimal price { get; set; } }

Controlador de inicio:

 public class homeController : Controller { public ActionResult Index() { var product1 = new Product { name = "Testproduct", itemNo = "PRD-151541", price = 19 }; return View(product1); } }

Vista de índice:

 @model WebUI.DomainModel.Product <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <legend>Product</legend> <div class="editor-label"> @Html.LabelFor(model => model.name) </div> <div class="editor-field"> @Html.EditorFor(model => model.name) @Html.ValidationMessageFor(model => model.name) </div> <div class="editor-label"> @Html.LabelFor(model => model.itemNo) </div> <div class="editor-field"> @Html.EditorFor(model => model.itemNo) @Html.ValidationMessageFor(model => model.itemNo) </div> <div class="editor-label"> @Html.LabelFor(model => model.price) </div> <div class="editor-field"> @Html.EditorFor(model => model.price) @Html.ValidationMessageFor(model => model.price) </div> <p> <input type="submit" value="Save" /> </p> </fieldset> }

El resultado:

Lamentablemente, no puedo enviar una imagen aquí; siga este enlace para ver el resultado: http://www.designvision.dk/temp/mvc3_razor_validation_error.gif

SO: al ejecutar el sitio web, el campo se establecerá en 19,00, que ES la definición cultural correcta, pero al intentar guardar, la validación falla.

Por favor ayuda...

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Puede probar el complemento jQuery Globalization de 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>

Se cambió el nombre del complemento y se movió, debe usar Globalize (marzo de 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>

más sobre esto en la publicación del blog de Scott Hanselman


over 4 years ago · Santiago Trujillo Report

0

Script actualizado para la versión actual de https://github.com/jquery/globalize con soporte de elementos opcionales

 $.validator.methods.number = function (value, element) { return this.optional(element) || !isNaN(Globalize.parseFloat(value)); } $(function () { Globalize.culture('%%culture%%'); });
over 4 years ago · Santiago Trujillo Report

0

@shatl tiene la respuesta correcta a partir de hoy. Tenga en cuenta que para el atributo de rango necesitará un truco que se muestra a continuación. El código completo para agregar se muestra a continuación:

 @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> }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!