2009-11-27 3 views
0

Я создал 3 окна выбора, содержащие дни, месяцы и год. То, что мне действительно нужно, - проверить после того, как пользователь выбрал дату, если дата превышает год с текущей даты, отображается сообщение или так.Javascript валидация даты выбор ящиков

Im немного тупик о том, что делать. Любое решение было бы здорово.

Благодаря

+0

Я бы посоветовал вам объяснить вашу проблему немного лучше с образцами кода и т. Д. – Alfred

ответ

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(); 

y+1 потому, что если мы добавим один год, и по-прежнему меньше, чем new Date() (сегодня), то это больше, чем один год назад.

m-1 потому, что месяцы в Date конструктора являются перечислением, что означает январь 0.

+0

Он попросил год в будущем, а не в прошлом;) –

+0

Единственные инструкции, которые у нас есть, это «если дата превышает год с текущей даты », который, я думаю, мы можем интерпретировать в любом направлении ...? но хороший улов; Я отредактировал мое сообщение, чтобы разместить как –

0

Есть 31556926000 миллисекунды в году. Просто конвертируйте эту дату в метку времени и подставьте текущую дату из нее. Если результат превышает 31556926000, он находится на расстоянии более года.

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

Почему голос? –

0

Не изобретайте велосипед еще раз. Используйте library that does validation.

+0

Существующая библиотека, как правило, является лучшим вариантом, но если OP еще не использует jQuery, это слишком много. Кроме того, небольшая базовая математика на самом деле не требует библиотеки/плагина –

+0

@justin Я предполагаю, что он также должен делать привязку событий? Кроме того, я думаю, что большинство пользователей allready имеют кэшированную версию JQuery из google CDN. – Alfred

+0

Проверка - это то, что вы делаете снова и снова в каждой форме, на каждом веб-сайте ... хорошо. выполняйте свои собственные функции проверки. Подумайте в архитектуре не в сценариях. –

Смежные вопросы