Je n'étais satisfait d'aucun des sélecteurs de temps suggérés, j'ai donc créé le mien en m'inspirant de Perifer et de la spécification HTML5:
http://github.com/gregersrygg/jquery.timeInput
Vous pouvez soit utiliser les nouveaux attributs html5 pour la saisie du temps (step, min, max), soit utiliser un objet options:
<input type="time" name="myTime" class="time-mm-hh" min="9:00" max="18:00" step="1800" />
<input type="time" name="myTime2" class="time-mm-hh" />
<script type="text/javascript">
$("input[name='myTime']").timeInput(); // use default or html5 attributes
$("input[name='myTime2']").timeInput({min: "6:00", max: "15:00", step: 900}); // 15 min intervals from 6:00 am to 3:00 pm
</script>
Valide l'entrée comme ceci:
- Insérer ":" s'il manque
- Pas d'heure valide? Remplacer par du blanc
- Pas une heure valide selon l'étape? Arrondir au pas le plus proche
La spécification HTML5 n'autorise pas la syntaxe am / pm ou d'heure localisée, elle n'autorise donc que le format hh: mm. Les secondes sont autorisées selon les spécifications, mais je ne l'ai pas encore implémenté.
C'est très "alpha", donc il peut y avoir des bugs. N'hésitez pas à m'envoyer des patchs / pull requests. Avoir testé manuellement dans IE 6 & 8, FF, Chrome et Opera (dernière stable sur Linux pour ces derniers).