JQuery – Valider la valeur de l’heure sur un formulaire – de manière correcte?

Après une recherche sur Google, une recherche sur ce site et sur jQuery a révélé qu’il n’existait aucun moyen simple de valider la valeur temporelle.

En apparence, il est suggéré d’utiliser addMethod et d’utiliser la touche pour réexaminer régulièrement la valeur afin de vérifier la date et l’heure.

Cependant, j’ai décidé de regarder jquery.validate.js et de jquery.validate.js comment dateISO, il semblait beaucoup plus facile de le faire. J’ai donc copié toutes les données relatives à dateISO et je l’ai appelé timeISO, puis modifié la chaîne pour valider l’heure. aiguillon du temps

 ^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$ 

Y a-t-il une raison pour laquelle on ne devrait pas modifier jquery.validate.js et le faire comme je l’ai fait? Juste un peu inquiet car toutes mes recherches sur google et sur ce forum n’ont jamais été suggérées.

Vous pouvez append des méthodes personnalisées à jQuery.validate . Il y en a probablement une disponible pour cela, mais j’ai codé cette validation du format de l’heure 24h comme exemple:

 $.validator.addMethod("time24", function(value, element) { if (!/^\d{2}:\d{2}:\d{2}$/.test(value)) return false; var parts = value.split(':'); if (parts[0] > 23 || parts[1] > 59 || parts[2] > 59) return false; return true; }, "Invalid time format."); 

Violon

Documentation .

Vous pouvez également le résumer en une seule expression régulière ( source ):

 ([01]?[0-9]|2[0-3])(:[0-5][0-9]){2} 

Et si vous utilisez HTML5, vous pouvez utiliser l’atsortingbut pattern :

  

Violon

Continuez à utiliser la méthode jQuery.validate si vous avez besoin de compatibilité avec les navigateurs plus anciens:

 $.validator.addMethod("time24", function(value, element) { return /^([01]?[0-9]|2[0-3])(:[0-5][0-9]){2}$/.test(value); }, "Invalid time format."); 

Démo

Je sais que cela fait longtemps, mais je pense que la meilleure solution consiste à vérifier la bibliothèque additional-methods.js . (Vous pouvez le télécharger à partir de http://jqueryvalidation.org/ )

Il y a deux validations: “time12h” et “time” .

La modification du kernel du plugin rend plus difficile la mise à jour vers une nouvelle version du plugin, sans remplacer vos modifications, et est rarement une bonne idée.

Je vous suggère de placer votre code personnalisé dans un fichier séparé, au lieu de modifier le code principal.