MVC 4: errore di convalida Data in Firefox, Chrome, Safari - IE ok
-
25-10-2019 - |
Domanda
ho aggiornato un MVC 3 web app per MVC 4, seguendo le istruzioni per uppgrade manuale. Tutto è andato bene, e l'applicazione è in esecuzione in IE9. Ho forme con campi di diversi tipi di dati con entrambi i lati client e server di validazione lato e tutti sono trattati correttamente quando il modulo viene inviato.
Ma quando uso altro browser - testato con Firefox 8, Chrome 15 e Safari 5.1.1 - Viene a mancare durante la convalida campi della data. I''m utilizzando la cultura 'pt-PT' con date in formato gg-mm-aaaa, e come ho detto, in IE9 hanno superato la convalida, ma su altri browser si dice il campo non è una data valida.
TIA
Joaquim
Soluzione
ho scoperto che il problema era nella convalida JQuery. Si chiama il javascript Data costruttore per verificare se la data è valida:
// http://docs.jquery.com/Plugins/Validation/Methods/date
date: function(value, element) {
return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
},
Dal javascript Data costruttore si aspetta una data nella forma AAAA-MM-dd è tornato non valido per le date in portoghese formato gg-MM-yyy.
L'eccezione è IE che non restituisce non valido, ma una data spettacolo diverso da quello che abbiamo introdotto.
La soluction era quello di creare un jquery.validate-pt.js con il codice per ignorare la convalida con quello corretto per il nostro formato:
$.validator.methods.date = function (value, element) {
return this.optional(element) || ( /^\d{1,2}[\/-]\d{1,2}[\/-]\d{4}(\s\d{2}:\d{2}(:\d{2})?)?$/.test(value)
&& !/Invalid|NaN/.test(new Date(value.replace("/", "-").split("-")[2], value.replace("/", "-").split("-")[1], value.replace("/", "-").split("-")[0])));
}