Estoy creando una aplicación Django simple donde puedes crear recetas con ingredientes. En mi vista RecipeCreate , tengo un formulario simple con una entrada de select (donde selecciona un producto) y un input type="number" con el recuento de productos. Entonces mi forma y modelo son bastante simples:
class Ingredient(models.Model): product = models.ForeignKey(Product) count = models.DecimalField(max_digits=4, decimal_places=2) class IngredientForm(forms.ModelForm): class Meta: model = Ingredient fields = ('product', 'count') Ahora, cuando quiero mostrar mi receta en mi vista RecipeEdit , todo se carga bien, excepto la entrada de count . Recibo el siguiente error de validación de jQuery:
The specified value "12,00" is not a valid number. The value must match to the following regular expression: -?(\d+|\d+\.\d+|\.\d+)([eE][-+]?\d+)? Debido a que estoy escribiendo un sitio web polaco, me gustaría tener nuestro separador decimal estándar nacional, que es un , no un . (pero el punto también debe ser un separador).
Una de las soluciones sería usar un input type="text" , pero significaría que tengo que validar mi número manualmente, lo cual es problemático. ¿Hay alguna forma de pasar mi número 12,00 para que sea aceptado por el campo de entrada? ¿Probablemente cambiando/sobrescribiendo la validación estándar de jQuery? Pero aceptaré cualquier buena solución sugerida.
Otro dato curioso es que cuando escribo manualmente 12,00 o 12.00 y envío mi formulario, mi formulario es válido y mi campo de recuento de Ingredient tiene un valor de 12 que es lo que deseo. Es otro pro para el input type="number" .
Puede configurar su separador decimal local
ACTUALIZAR:
No vi que está relacionado con jquery,
podría crear una nueva clase de validador para números de coma, por ejemplo
jQuery.validator.addMethod("commanumber", function (value, element) { return this.optional(element) || /^(\d+|\d+,\d{1,2})$/.test(value); }, "Please specify the correct number format");o incluso extender regex a support . además
Ok, he hecho algo como esto. En primer lugar, estoy usando un tipo de entrada = "texto". Luego, usando jQuery.numeric() , convierto mi entrada para que solo acepte números y un , como separador decimal.
$("#field_id").numeric({ decimal : "," }); Ahora, cada vez que envío mi formulario, tengo un código que convierte mi , en . para que se ajuste a la lógica de backend:
$('#recipe-form').on('submit', function(){ $('.convert-separator').each(function () { $(this).val($(this).val().replace(',','.')); }); this.submit(); }); Pero creo que no es la mejor solución. Creo que debe existir la posibilidad de usar el campo input type="number" con un separador ,
Puede convertir el valor de conteo en su código jQuery:
dotCount = count.toString().replace(',', '.');Esto reemplaza la coma con un punto