2014-10-29 2 views
-1

HTML

datepicker:<br /> 
<input id="datepicker-1" type="text"/> 

JavaScript

$(document).ready(function(){ 
    $("#datepicker-1").datepicker({ 
     dateFormat: "d M", 
     numberOfMonths: 1, 
     showButtonPanel: true, 
     altFormat: "dd-mm-yy", 
     minDate: new Date(2015, 4, 1), 
     maxDate: new Date(2017, 6, 31), 
     onSelect: function(){ 
      var myDate = $(this).datepicker('getDate'); 
      console.log('current date: ' + myDate); 
     } 
    }) 
}); 

jsFiddle http://jsfiddle.net/web_developer/cr3zo7xr/jQuqey UI возвращения неверную дату при использовании DateFormat и altFormat

Например, можно выбрать "может 20, 2015" в DatePicker и Итак, getDate метод показывает 2014 год вместо 2015

enter image description here

Если удалить dateFormat: "d M"GetDate метод показывает правильную дату

enter image description here

Возникает вопрос:

Почему метод GetDate показать неправильный год с dateFormat: "d M" включен?

+0

Создание JSFiddle приятно. Лучше получить правильную ссылку. – MrUpsidown

+0

, если год не определен в формате dateFormat i.e только «d M», тогда он выберет системный год. –

+0

@MrUpsidown благодарит за уведомления, ссылка исправлена. –

ответ

0

Вам необходимо установить правильный dateFormat. Если вы хотите myDate быть в формате 'd M' вы можете сделать:

var myDate = $.datepicker.formatDate('d M', $(this).datepicker('getDate')); 

Полный пример:

$(document).ready(function(){ 
    $("#datepicker-1").datepicker({ 
     dateFormat: "d M yy", 
     numberOfMonths: 1, 
     showButtonPanel: true, 
     altFormat: "dd-mm-yy", 
     minDate: new Date(2015, 4, 1), 
     maxDate: new Date(2017, 6, 31), 
     onSelect: function(){ 
      var myDate = $.datepicker.formatDate('d M', $(this).datepicker('getDate')); 
      console.log(myDate); 
     } 
    }) 
}); 
0

Существует небольшая проблема здесь с dateFormat и altFormat.

  • dateFormat будет изменено значение текущего входного в элементе, а также будет использоваться для разбора даты
  • altFormat принимает значение и сохранить его в другом формате в другом входе указанного altField

Вы можете использовать это поле в качестве скрытого ввода для хранения данных. В приведенном ниже примере я оставлю это поле в виде текста, чтобы вы могли видеть результаты.

$(document).ready(function(){ 
 
     
 
    $("#datepicker-2").datepicker({dateFormat: 'dd-mm-yy'}); 
 
    $("#datepicker-1").datepicker({ 
 
     dateFormat: "d M", 
 
     numberOfMonths: 1, 
 
     showButtonPanel: true, 
 
     altFormat: "dd-mm-yy", 
 
     altField: '#alt-format', 
 
     minDate: new Date(2015, 4, 1), 
 
     maxDate: new Date(2017, 6, 31), 
 
     onSelect: function(n, o){ 
 
      var myDate = $.datepicker.parseDate(o.settings.altFormat, $(o.settings.altField).val()); 
 
       // this will parse the date of the hidden input with the format of altFormat 
 
      $('#result').text('current date: ' + myDate); 
 
      
 
      myDate.setDate(myDate.getDate() + 30); 
 
      $('#datepicker-2').datepicker('setDate', myDate); 
 
      
 
     } 
 
    }); 
 
    
 
});
<link href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css" rel="stylesheet"/> 
 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script> 
 

 

 
datepicker:<br /> 
 
<input id="datepicker-1" type="text"/> 
 
<input id="alt-format" type='text'/> 
 

 
<input id="datepicker-2" type="text"/> 
 

 

 
<br/><br/> 
 
<div id='result'></div>

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