2009-11-27 4 views
0

J'ai créé 3 boîtes de sélection contenant des jours, des mois et des années. Ce que je voudrais vraiment est de vérifier après que l'utilisateur a choisi une date, si la date est plus d'un an à partir de la date actuelle un message est affiché ou plus.Validation Javascript des boîtes de sélection de date

Je suis un peu perplexe sur ce qu'il faut faire. Toute gidance serait géniale.

Merci

+0

Je vous conseille d'abord d'expliquer votre problème un peu mieux avec des échantillons de code, etc. – Alfred

Répondre

1
var ddlYear = document.getElementById('ddlYear'); 
var ddlMonth = document.getElementById('ddlMonth'); 
var ddlDay = document.getElementById('ddlDay'); 

var y = ddlYear[ddlYear.selectedIndex]; 
var m = ddlMonth[ddlMonth.selectedIndex]; 
var d = ddlDay[ddlDay.selectedIndex]; 

// past 
var dt = new Date((y+1), (m-1), d); 
var moreThanOnYearAgo = dt < new Date(); 

// future 
var dt2 = new Date((y-1), (m-1), d); 
var moreThanOnYearAhead = dt2 > new Date(); 

Le y+1 est parce que si nous ajoutons un an, et sont encore moins new Date() (aujourd'hui), il est plus d'un an plus tôt.

Le m-1 est parce que mois dans le constructeur Date sont un ENUM, ce qui signifie Janvier est 0.

+0

Il a demandé pour une année dans le futur, pas dans le passé;) –

+0

Les seules instructions que nous avons sont "si la date est plus d'un an à partir de la date actuelle ", ce que je suppose que nous pouvons interpréter dans n'importe quelle direction ...? mais bonne prise; J'ai édité mon post pour accueillir les deux –

0

Il y a 31556926000 millisecondes en un an. Il suffit de convertir cette date en horodatage et de la soustraire de la date actuelle. Si le résultat est supérieur à 31556926000, il est à plus d'un an.

var userDate = new Date("11/29/2010"); 
var now  = new Date(); 
var year_ms = 31556926000; 

if (userDate.getTime() - now.getTime() >= year_ms) { 
    // A year away 
} else { 
    // less than a year away 
} 
+0

Pourquoi le vote à la baisse? –

0

Ne pas réinventer la roue une fois de plus. Utilisez un library that does validation.

+0

Une bibliothèque existante est généralement la meilleure option, mais si l'OP n'utilise pas déjà jQuery, c'est trop. En outre, un peu de mathématiques de base ne nécessite pas vraiment une bibliothèque/plugin –

+0

@justin Je suppose qu'il devrait également faire la liaison d'événements? En outre, je pense que la plupart des utilisateurs ont déjà une version en cache de Jquery de google CDN. – Alfred

+0

validation est une chose que vous faites encore et encore dans chaque forme, sur chaque site ... ok. faites vos propres fonctions de validation. Pensez dans l'architecture pas dans les scripts. –

Questions connexes