jquery - net - validar fecha c# dd mm yyyy
MVC DateTime ValidaciĆ³n-Formato de fecha del Reino Unido (5)
¡El ejemplo de Bohdan funcionó! Tengo +1 tu respuesta compañero.
Para completar, he escrito una publicación de blog sobre cómo integrar todas las partes (Modelo, Vista, EditorTemplate personalizado, jQuery incluye y agrega la solución de Bohdan).
Puedes leerlo aquí: http://www.kestrelblackmore.com/blog/jquery-datepicker-mvc4
Tengo una vista simple con dos campos de fecha con ValidationMessageFor controles agregados para la validación de JavaScript discreta.
Mi problema es que me siguen diciendo que mi fecha no es válida, cuando está en formato correcto (dd / MM / aaaa)
He agregado <globalization culture="en-GB" uiCulture="en-GB"/>
a mi web.config, y también se ha incluido [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
en cada propiedad DateTime, pero aún así no aceptará las fechas de formato en el Reino Unido.
¿Hay algo obvio que me falta aquí?
En realidad, solo necesitas sobrecargar el método de validación de JavaScript no intrusivo para la fecha
jQuery(function ($) {
$.validator.addMethod(''date'',
function (value, element) {
if (this.optional(element)) {
return true;
}
var ok = true;
try {
$.datepicker.parseDate(''dd/mm/yy'', value);
}
catch (err) {
ok = false;
}
return ok;
});
});
He tomado un enfoque diferente para resolver esto en comparación con otras respuestas. Use jQuery para agregar una nueva función de fecha que forzará la fecha para usar el conjunto de cultura local actual en la aplicación.
$.validator.addMethod(''date'', function (value, element) {
var d = new Date();
return this.optional(element) || !/Invalid|NaN/.test(new Date(d.toLocaleDateString(value)));
});
Eso es si falla en la validación de jQuery. Doy crédito a esta respuesta a la publicación de Elton Stoneman que se puede leer here
Espero que esto ayude a alguien más.
Intente cambiar esto directamente en jquery.validate.js. Trabaja con $ .datpicker
date: function (value, element) {
var s = value;
var ind2 = 3;
var ind3 = 6;
var ind4 = 4;
if (s.substr(6, 1) != "2") {
ind2 = ind2 + 1;
ind3 = ind3 + 1;
ind4 = ind4 + 1;
}
var ndan = s.substr(0, 2);
var nmje = s.substr(ind2, 2);
var ngod = s.substr(ind3, ind4);
var ns = ngod + "," + nmje + "," + ndan;
return this.optional(element) || !/Invalid|NaN/.test(new Date(ns));
Sé que es viejo pero al usar esto agregué a la entrada un atributo con el formato de fecha actual (que obtuve del código ASP MVC con CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern.ToLower ()).
Luego reescribí la validación javascript para usar el formato encontrado en el atributo.
var format = "mm/dd/yyyy";
if (element.attributes["data-format"]) {
format = element.attributes["data-format"].value;
}
También leí el mismo atributo para jquery ui datepicker. Puede que no sea tan útil, pero puede mantener el formato coherente con la cultura al menos. Aunque podría ayudar a alguien