2010-10-01 5 views
3

J'ai un datefield sous une forme comme ceci:validation de date dans ExtJS

{ 
       xtype:'datefield', 
       name:'order[date]', 
       id:'dato', 
       format:'d-m-Y', 
       allowBlank: false, 
       cls:'input_single', 
       emptyText:'dd-mm-yyyy', 
       minValue:new Date().add('d',-1), 
       onFocus: function(){ 
        if (this.el.getValue() == 'dd-mm-yyyy') { 
         Ext.getCmp('dato').setValue('');  
        } 

       }, 
       msgTarget:'side', 
       minText:'Must be future date', 
       validationEvent:false 


      } 

Maintenant, mon problème est que je veux forcer l'utilisateur à utiliser le format dd-mm-aaaa, mais avec le code ci-dessus l'utilisateur peut taper 01102010 pour le 1er octobre 2010.

Je pensais que le format: 'dmy' forcerait cela, mais ce n'est pas le cas.

La validation doit être effectuée par le client.

Donc soit le champ devrait reformater la date au 01-10-2010 onblur, soit il ne devrait pas autoriser d'autres formats que dd-mm-yyyy. La dernière version est préférée :)

Merci d'avance!

+0

Cela semble être une idée terrible ... Pourquoi ne pas les laisser entrer le format qu'ils veulent? Vous vous retrouvez toujours avec le même objet de date. –

+1

parce que parfois les gens vont écrire des choses wierd comme 1. octobre 2010 ou 10/01/10 ou même mélanger jour et mois. Thats la principale raison de cette – sunebrodersen

Répondre

1

a juste fait un peu plus des recherches dans le documentaion api et trouvé

altFormats:'d-m-Y', 

qui a résolu le problème. Maintenant, il n'acceptera que le format ci-dessus.

0

Vous pouvez créer et utiliser votre propre VType et en l'incluant, vous pouvez vérifier si un utilisateur a saisi une date valide ou non. En outre, il vous offre plus de possibilités de réutilisation. Pour refernce: http: docs/#!/Api/Ext.form.field.VTypes