jquery validate : bug sous safari

4 Avr

Fervent utilisateur de jquery et de ses plugins, j’ai rencontré un problème de validation de date avec Safari…

1. jquery.validate

Source : http://bassistance.de/jquery-plugins/jquery-plugin-validation/

La première erreur était en utilisant le plugin jquery.validate.

J’obtenais en effet un message d’erreur : ‘Please enter a valid date’.

Ma date n’était pas valide. Pourtant je l’avais bien saisi via un calendrier et elle avait bien l’air correcte dans mon input…

Mais voila, elle était au format YYYY-MM-DD… et ça, ben Safari il aime pas…

Pour contourner cette erreur, il faut (et il suffit) de modifier le plugin jquery.validate comme ceci :

Code d’origine : 

date: function(value, element) {
            return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
},

Code modifié : 

date: function(value, element) {
           var d = new Date();
           return this.optional(element) || !/Invalid|NaN/.test(new Date(d.toLocaleDateString(value)));
},

J’ai surligné le code ajouté.

 

2. jquery.countdown

Source : https://code.google.com/p/jquery-countdown/

L’erreur obtenu ici était l’affiche  « NaN » au lieu de mon compte à rebours…

Le problème vient la aussi du fait que la date n’est pas dans un format accepté par Safari.

Ma date de début était au format suivant : YYYY-MM-DD…

En la passant au format YYYY/MM/DD , l’erreur n’est plus présente.

 

Conclusion : 

Sans chercher à expliquer outre-mesure un comportement que je ne m’explique pas forcément bien moi même, il semblerait que la console javascript de Safari n’interprète pas tout à fait correctement les différents formats de date (ou alors de façon trop strict) perturbant ainsi les fonctions js utilisant des variables de type date.


Une Réponse pour “jquery validate : bug sous safari”


  1. Fatal error: Uncaught Error: Call to undefined function ereg() in /home/users7/f/fki8658/www/WordPress/Paul.mouzet.com/wp-content/themes/bueno/includes/theme-comments.php:66 Stack trace: #0 /home/users7/f/fki8658/www/WordPress/Paul.mouzet.com/wp-content/themes/bueno/includes/theme-comments.php(20): the_commenter_link() #1 /home/users7/f/fki8658/www/WordPress/Paul.mouzet.com/wp-includes/class-walker-comment.php(184): custom_comment(Object(WP_Comment), Array, 1) #2 /home/users7/f/fki8658/www/WordPress/Paul.mouzet.com/wp-includes/class-wp-walker.php(146): Walker_Comment->start_el('', Object(WP_Comment), 1, Array) #3 /home/users7/f/fki8658/www/WordPress/Paul.mouzet.com/wp-includes/class-walker-comment.php(139): Walker->display_element(Object(WP_Comment), Array, '5', 0, Array, '') #4 /home/users7/f/fki8658/www/WordPress/Paul.mouzet.com/wp-includes/class-wp-walker.php(389): Walker_Comment->display_element(Object(WP_Comment), Array, '5', 0, Array, '') #5 /home/users7/f/fki8658/www/WordPress/Paul.mouzet.com/wp-includes/comment-te in /home/users7/f/fki8658/www/WordPress/Paul.mouzet.com/wp-content/themes/bueno/includes/theme-comments.php on line 66