2015-03-03 1 views
0

Я создаю сайт, на котором вы можете зарегистрировать собаку.
В регистрационной форме вы можете ввести дату рождения своей собаки с помощью jquery datepicker. Эта часть работает.

Цель

1) Когда дата рождения определенно пользователем, я хотел бы, чтобы автоматически вычислить разницу между введенной датой и сегодня.

2) Используйте разницу между датами для отображения возрастной группы собаки в другом поле формы.
(щенок (< 6 месяцев), молодой (< 2 лет), взрослые (< 6 лет) и так далее ..)

Мой код

использовать разницу дат для вывода строки

<!-- Datepicker --> 
    <script> 
     $(function() { 
     $("#datepicker").datepicker({ 
      dateFormat: "dd. MM yy", 
      altFormat: "yy-mm-dd", 
      altField: "#dog_pet_birthdate", 
      maxDate: "0", 

     <!-- my attempt on calculating the difference 
     between the entered date and the current date --> 
      onSelect: function() { 
       var birthDate = $("#dog_pet_birthdate").datepicker("birthdate"); 
       var now = new Date(); 
       var days = (now - birthDate)/(1000 * 60 * 60 * 24); 
       $("#dog_pet_age").val(days); 
      } 
      }); 
     }); 
    </script> 

    <!-- the register form (the relevant parts)--> 
    <label>Birthday:</label> 
    <!-- date to be displayed --> 
    <input type="text" name="birthdate" id="datepicker" placeholder="your dog's brithdate" readonly="readonly" required> 
    <!-- date to be written to the database using the altField --> 
    <input type="hidden" name="dog_pet_birthdate" id="dog_pet_birthdate"> 

    <!-- the input field, in which I would like to output the age group depending on the date difference -->   
    <label>Age group</label> 
    <input type="text" name="dog_pet_age" placeholder="your dog's age" readonly="readonly" required> 



Я действительно застрял, мне даже не удалось вычислить разницу между теперь и введенной датой, поэтому я даже не попробовал вторую часть моего вопроса. Если бы кто-то мог помочь мне с обоими, я был бы не только благодарен!

+1

Попробуйте преобразовать строку 'birthDate' в дату' var dtBirthDate = new Date (birthDate); ' – yW0K5o

ответ

1

Ваш var birthDate не работает должным образом. Чтобы получить конкретную дату, нужно использовать getDate, see here.

Вы должны сделать что-то вроде:

var birthDate $("#datepicker").datepicker(' getDate ');

More info here.

Вы можете затем использовать эту разницу, чтобы показать, что вы хотите:

if(parseInt(your_string)<60){ 
$("#dog_pet_age").val("your value"); 
} 
else if(parseInt(your_string)<120){ 
$("#dog_pet_age").val("another.."); 
} 
else 
{ 
$("#dog_pet_age").val("the rest!");} 
+0

Wow !! Это работает! Это возвращает мне разницу в днях. Огромное спасибо!! Есть ли шанс, что вы могли бы помочь мне в том, как использовать этот номер для отображения строки? – Schwesi

+0

Конечно. :) Вы, вероятно, будете использовать инструкцию 'if' и' parseInt', например: 'if (parseInt (your_string) <60) { $ (" # dog_pet_age "). Val (" ваше значение "); } else if (parseInt (your_string) <120) { $ ("# dog_pet_age"). Val ("another .."); } еще { $ ("# dog_pet_age") знач ("остальное!");.} ' Я добавлю его к ответу. – Docteur

1

Попробуйте что-то вроде:

var now = Date.now(); 

var date = $("#datepicker").datepicker(' getDate '); 

var days = (now - date)/1000/60/60/24; 

$('#example').val() = days; 
+0

Большое вам спасибо! Доктор уже дал рабочий ответ выше. Однако, если бы вы могли помочь мне отобразить строку в соответствии с количеством дней, я был бы действительно благодарен! – Schwesi

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