2010-08-16 2 views
30

Je voudrais ajouter des sélecteurs de date natifs à mon application, qui utilise actuellement un système hérité à la maison. Le support d'entrée de date n'est pas encore très répandu, mais si je pouvais présenter les deux implémentations en fonction de la compatibilité, ce serait idéal.Spécification de la sortie de valeur d'un type d'entrée HTML5 = date?

Existe-t-il un moyen de spécifier la sortie de la valeur donnée par un datpicker HTML? La valeur par défaut pour l'opéra est yyyy-mm-dd, et j'ai très explicitement besoin de dd-MMM-yyyy.

Existe-t-il un moyen de contrôler cette sortie?

+0

Vous ne savez pas si c'est vraiment ce que vous voulez, mais vous pourriez trouver de la valeur dans ceci: http://flowplayer.org/tools/dateinput/index.html – treeface

+0

Qu'entendez-vous par valeur de sortie exactement. La valeur * value * ou la valeur * affichée *? –

+1

@Pekka: Les deux, vraiment. –

Répondre

23

Le champ HTML5 date input est spécifique sur le format qu'il utilise: RFC 3339 full-date

Est-il possible de changer le sélecteur de date de l'héritage à utiliser le format aaaa-mm-jj (et mettre à jour le côté serveur qui lit cela)? Je suppose que non, alors vous pouvez ajouter un code de colle Javascript qui écoute un événement de changement sur l'entrée HTML5 et met à jour un champ de valeur de date cachée pour correspondre au format du sélecteur de date hérité (convertit aaaa-mm-jj à jj-MMM-aaaa).

+43

Cela me rend triste. –

+8

dd-mmm-yyyy n'est même pas indépendant de la locale (en supposant que mmm est "Jan", "Feb", etc.). Donc c'est plutôt "triste" si votre webapp/scripts nécessite un tel format plutôt qu'un standard celui qui ne contient aucune chaîne localisée. – ThiefMaster

+9

@ThiefMaster: Les utilisateurs qui attendent le 03-FEB-2011 pour chaque entrée de date sur une application entière continueront à s'attendre à ce format. aaaa-mm-jj n'est ni lisible ni prévu pour les citoyens américains (dont le client était à l'époque), et le format échoue complètement pour la convivialité si seulement un mois et un jour sont nécessaires, ou un jour et une heure. Lorsque la convention existe, la convention l'emporte sur d'autres principes de conception dans de nombreux cas pour maximiser la facilité d'utilisation, en particulier lorsque le client a peu de désabonnement. –

0

Le format du champ de date HTML standard. Bien qu'il ne soit pas possible de changer cela, vous pouvez facilement convertir un objet date au format que vous recherchez, étant donné que JavaScript est activé pour l'utilisateur.

// Converts any valid Date string or Date object into the format dd-MMM-yyyy 
function dateTransform(d) { 
    var s = (new Date(d)).toString().split(' '); 
    return [s[2],s[1],s[3]].join('-'); 
} 

Sinon, vous devrez soumettre au format ISO et implémenter une solution côté serveur. Peut-être qu'avec le temps, cela pourrait conduire à une plus grande utilisation du format de date standard dans chaque localité.

Questions connexes