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

È stato utile?

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])));
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top