Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.10.2012, 12:55
Интересующийся
Отправить личное сообщение для angel__2003 Посмотреть профиль Найти все сообщения от angel__2003
 
Регистрация: 24.09.2012
Сообщений: 14

Сравнение даты. Почему то не сравнивает год
Добрый день столкнулся с задачей сравнить две даты. почему то jQuery год не хочет сравнивать. То есть если вводишь вручную, дату или месяц выше стандартного значение,то проверка нормально работает. а если год то не очень
<html>
<head>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>	

</head>
<body width="800">

<form name="MainCustomForm" action="${form.action}" method="POST" enctype="multipart/form-data">
<div align="center">
Дата с которой проверяю 
<input  value='16.10.2012' name='date_start' id='date_start'> <br>
Дата выдачи паспорта<font color="red">*</font><input required class='datepicker_t' name="Date_Issue_Text" id="Date_Issue_Text" value="${Date_Issue_Text}"   pattern="(0[1-9]|1[0-9]|2[0-9]|3[01])\.(0[1-9]|1[012])\.(19|20)\d\d" >


<div name="font_ok2" id="font_ok2" align='center' style="display: none"> <font size='1' color='green'>проверка даты прошла успешно</font></div>
<div name="font_error2" id="font_error2" align='center' style="display: none"> <font font-size='1' color='red'>дата должна быть меньше текущей &nbsp;<input  value='16.10.2012' name='date_start' id='date_start'>&nbsp; </font></div>

     		
</form>


<!-- КАЛЕНДАРЬ c ограничением сверху-->
<script type="text/javascript">
$(document).ready(function() {
   $(".datepicker_t").datepicker({
		monthNames:["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
		monthNamesShort:["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],      
		dayNamesMin:["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
  	    firstDay:1,
  	    dateFormat:"dd.mm.yy",
		changeYear: "true",
		yearRange:"1900:",
		changeMonth:"true",
		maxDate:"+0",
		showOn:"button"
		});
		$("*").css("font-size","14px");
});
</script>


<!-- для даты выдачи паспорта -->
<script type="text/javascript">
$(document).ready(function() {
$("#Date_Issue_Text").change(function () {
if ($("#Date_Issue_Text").val() <= $("#date_start").val())
{
$("#font_ok2").css({display:"block"}); 
$("#font_error2").css({display:"none"}); 
}
else
{
$("#Date_Issue_Text").val("");
$("#font_ok2").css({display:"none"}); 
$("#font_error2").css({display:"block"}); 
}
});
});
</script>


</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 16.10.2012, 13:04
Профессор
Отправить личное сообщение для BallsShaped Посмотреть профиль Найти все сообщения от BallsShaped
 
Регистрация: 14.09.2012
Сообщений: 162

В данном примере сравниваются строки, а не даты.
Ответить с цитированием
  #3 (permalink)  
Старый 16.10.2012, 13:10
Интересующийся
Отправить личное сообщение для angel__2003 Посмотреть профиль Найти все сообщения от angel__2003
 
Регистрация: 24.09.2012
Сообщений: 14

Сообщение от BallsShaped Посмотреть сообщение
В данном примере сравниваются строки, а не даты.
извиняюсь за глупый вопрос
а как в строку в дату?
Ответить с цитированием
  #4 (permalink)  
Старый 16.10.2012, 13:25
Профессор
Отправить личное сообщение для BallsShaped Посмотреть профиль Найти все сообщения от BallsShaped
 
Регистрация: 14.09.2012
Сообщений: 162

Вообще, о правила разбора можно почитать здесь. Но думаю, правильнее было бы делать это через datepicker. Я просто не работал с этим плагином, не знаю.
Ответить с цитированием
  #5 (permalink)  
Старый 16.10.2012, 13:32
Интересующийся
Отправить личное сообщение для angel__2003 Посмотреть профиль Найти все сообщения от angel__2003
 
Регистрация: 24.09.2012
Сообщений: 14

да я и сделал через datepicker, просто мне сказали что должна быть еще форма ручного ввода и на нее повешена проверка чтобы не наступившию дату нельзя было ввести
Ответить с цитированием
  #6 (permalink)  
Старый 16.10.2012, 15:03
Интересующийся
Отправить личное сообщение для angel__2003 Посмотреть профиль Найти все сообщения от angel__2003
 
Регистрация: 24.09.2012
Сообщений: 14

что то въехать не могу как Date.parse() работает может кто пример напишет
Ответить с цитированием
  #7 (permalink)  
Старый 16.10.2012, 15:26
Аватар для eirnvn
Кандидат Javascript-наук
Отправить личное сообщение для eirnvn Посмотреть профиль Найти все сообщения от eirnvn
 
Регистрация: 15.09.2011
Сообщений: 70

http://learn.javascript.ru/datetime-...и-date-parse
__________________
"I don't write to say what I think, but to know what I think"
Ответить с цитированием
  #8 (permalink)  
Старый 16.10.2012, 18:52
Интересующийся
Отправить личное сообщение для angel__2003 Посмотреть профиль Найти все сообщения от angel__2003
 
Регистрация: 24.09.2012
Сообщений: 14

Сообщение от eirnvn Посмотреть сообщение
http://learn.javascript.ru/datetime-...и-date-parse
спасибо решил сделать так
<script type="text/javascript">
$(document).ready(function() {
$("#Date_Issue_Text").change(function () {
  var date_1 = new Date($("#date_start").val().replace(/(\d+).(\d+).(\d+)/, '$3/$2/$1'));
  var date_2 = new Date($("#Date_Issue_Text").val().replace(/(\d+).(\d+).(\d+)/, '$3/$2/$1'));

 var date  = new Date();

 date.setTime(Date.parse(date_1));
 var year1 = date.getFullYear();
 var month1 = date.getMonth();
 var day1 = date.getDate();
 
 date.setTime(Date.parse(date_2));
 var year2 = date.getFullYear();
 var month2 = date.getMonth();
 var day2 = date.getDate();
 
 var age = year2 - year1;
 var month = ( month2 + 1 )- ( month1 + 1); //+1 так как нумерация от 0 до 11
 var day = day2 - day1;
 /*
 // для тестирования
 {
 if (age <= 0) 
		{alert('по годам проверка пройдена');}
 else 	{alert('разница в годах: ' + year1 + ' - ' + year2 + ' = ' + age);}
 };
 {
 if (month <= 0) 
		{alert('по месяцам проверка пройдена');}
 else	{alert('разница в месяцам: ' + ( month1 + 1) + ' - ' + ( month2 + 1 ) + ' = ' + month);};
 };
 {
 if (day <= 0)
		{alert('по дням проверка пройдена');}
 else	{alert('разница в днях: ' + day1 + ' - ' +day2 + ' = ' + day);}
 };
 */
 if ( age <= 0 && month <= 0 && day <= 0)
{
$("#font_ok2").css({display:"block"}); 
$("#font_error2").css({display:"none"}); 
}
else
{
$("#Date_Issue_Text").val("");
$("#font_ok2").css({display:"none"}); 
$("#font_error2").css({display:"block"}); 
}
});
});
</script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск