Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

193
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda