2013-10-22 8 views
7

ich eine App, die ich vor kurzem auf .NET 4.5.1 und MVC 4. Upgrade Ich bin mit dem jQuery Datepicker und jQuery. Validierung 1.11.1.jQuery Datum Validierung MVC 4 .Net 4.5.1 UK Datum Error „muss ein Datum sein“

Ich bin in Großbritannien daher die Daten in dem en-GB locale ("dd/mm/yyyy") sein werden. Ich habe versucht, was vorgeschlagen wird here, here und here, aber ohne Erfolg.

Ich habe auch in meinem web.config:

<globalization uiCulture="en-GB" culture="en-GB" /> 

und haben die Globalisierung in IIS en-GB gesetzt, aber jedes Datum, das eingegeben wird, wird als ein US-Format Datum validiert.

Kann mir bitte jemand helfen?

+0

Ich hatte das gleiche Problem ein, während einer vor, nicht eine treffende Lösung für das Problem, wie eine Arbeit um, finden konnte ich deaktiviert die MVC-Client-Validierung, schrieb meine eigene benutzerdefinierte Validierung für 'required' und stellt Feld, um das Eingangsdatums als' readonly', so dass Benutzer nicht das Datum unter Verwendung der bereitgestellten ändern 'datepicker' – AthibaN

+0

Wenn Sie die Lösung über diesem Problem anwenden occure wird: http://stackoverflow.com/questions/26279779/validation-of-datetimepicker-isnot-working-properly –

Antwort

9

das Datum Validierungsmethode in jQuery.validate.js zum follwing Ändern löste das Problem:

date: function (value, element) { 
     $.culture = Globalize.culture("en-GB"); 
     var date = Globalize.parseDate(value, "dd/MM/yyyy", "en-GB"); 
     return this.optional(element) || 
         !/Invalid|NaN/.test(new Date(date).toString()); 
    } 

Getestet in Chrome, IE und FF

+0

Wo es hinzufügen? – Chlebta

+0

In den jQuery.validate.js Datei in Ihrer Lösung –

+0

und tun i 'Globalize.js' hinzufügen müssen, weil ich die alte' Datum ersetzt: Funktion ... 'mit diesem, aber es hat nicht immer arbeitete ich bin bekommen 'The finded ... muss Date' sein – Chlebta

0

Nachdem hatte gerade dies herauszufinden, ich die Regel overrode und verwendet, um ein Datenattribut

if (typeof jQuery.validator.methods.date !== 'function') { 
    var f = function (value, element) { 
     var e = $(element).attr('data-dateformat'); 
     if (e && (e.length)) { 
      var dt = jQuery.datepicker.parseDate(e, value); 
      return this.optional(element) || !/Invalid|NaN/.test(dt.toString()); 
     } else { 
      return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString()); 
     } 
    } 
    jQuery.validator.addMethod("date", f); 
} else { 
    var m = jQuery.validator.methods.date; 
    var f = function(value, element) { 
     var e = $(element).attr('data-dateformat'); 
     if (e && (e.length)) { 
      var dt = jQuery.datepicker.parseDate(e, value); 
      return this.optional(element) || !/Invalid|NaN/.test(dt.toString()); 
     } else { 
      return m(value, element); 
     } 
    } 
    jQuery.validator.addMethod("date", f); 
} 

Es vorausgesetzt, dass Sie picker haben, aber wenn Sie Daten verwenden und jQuery, ich denke, das ist eine sichere Wette. Wenn das Element ein Datumsformat in Daten-Datumsformat definiert hat, wird es es zu analysieren, die verwendet wird, sonst wird es wieder auf die Standarddatumsregel fallen, und wenn das nicht vorhanden war es implementiert die Standardregel.

Ich stelle dies in meiner Website globalen Code-Datei es außerhalb des jQuery-Skripte zu halten