2014-12-17 5 views
8

я поставил класс Jquery:JQuery DatePicker: Дата Validate

$(function() { 
      $(".datepickerIT").datepicker({ 
       showOtherMonths: true, 
       selectOtherMonths: true, 
       showAnim: "clip", 
       dateFormat: "dd/mm/yy", 
       minDate: "01/01/1925", 
       maxDate: "31/12/2050", 
       changeMonth: true, 
       changeYear: true, 
       yearRange: "1925:2050", 
       regional: "it"      
      }); 
     }); 

Я хочу, чтобы добавить проверочную дату, оповещение, если пользовательский ввод не является действительной датой

Как можно добавить к классу «.datepickerIT» проверка вроде этого?

onClose: function(dateText, inst) { 
     try { 
      $.datepicker.parseDate('dd/mm/yy', dateText); 
     } catch (e) { 
      alert(e); 
     }; 

И какой плагин я должен включить в головную часть?

ответ

4

Вы можете проверить дату в следующих способов (вам не нужно плагин для него): -

$(document).ready(function(){ 
    $("#datepicker").datepicker(); 
    $("#datepicker").blur(function(){ 
     val = $(this).val(); 
     val1 = Date.parse(val); 
     if (isNaN(val1)==true && val!==''){ 
      alert("error") 
     } 
     else{ 
      console.log(val1); 
     } 
    }); 
}); 

Working fiddle

UPDATE: Правильный подход упоминается @Razan Павла

+0

I попробовал свою скрипку и 'Date.parse' за 31 день в месяце, который не имеет такого дневного значения возврата, кроме NaN. Есть какое-то решение для этого? – Zaimatsu

+1

Недействительные даты принимаются этим методом. 40/40/2016, например, 1557439200000. – Joeblade

-1
$(document).ready(function(){ 

// Check in date 
    $("#in").datepick({ 
     dateFormat: "mm/dd/yy", 
     minDate:"0+1", 
     maxDate: "2years", 
     changeMonth:true, 
     changeYear:true,  
     onSelect:function(date_text,inst){ 
      var from = new Date(date_text); 
      $("#out").datepicker("option", "minDate",from); 
     }  


    }); 

// Check out date 



}); 

Примечание: -Введите имя вашего поля, а датапик - ваше имя плагина.

5

Date.parse не рекомендуется использовать, поскольку по-прежнему существует много различий в том, как разные строки синтаксического анализа синтаксически различаются. [1] [2]

Я бы использовал момент для проверки даты.

moment(newDate, 'DD/MM/YYYY', true).isValid() 

jsfiddle: http://jsfiddle.net/dw8xyzd4/

[1] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse [2] Why does Date.parse give incorrect results?

+0

Должен ли я включать библиотеку 'moment.js', чтобы использовать это? – xpuc7o

+0

Да, функция isValid является частью объекта момента. –

0

Date.parse() не поддерживает дд/мм/гггг и DatePicker GetDate устанавливает дату тока на любом разборе поэтому эта проверка на заказ с использованием новой даты (yyyy, mm, dd) для проверки деталей даты согласована после преобразования:

$(function() { 
    $(".datepickerIT") 
     .datepicker({ 
      showOtherMonths: true, 
      selectOtherMonths: true, 
      showAnim: "clip", 
      dateFormat: "dd/mm/yy", 
      minDate: "01/01/1925", 
      maxDate: "31/12/2050", 
      changeMonth: true, 
      changeYear: true, 
      yearRange: "1925:2050", 
      regional: "it"      
     }) 
     .on('blur', function() { // This check is for dd/mm/yyyy format but can be easily adapted to any other 
      if(this.value.match(/\d{1,2}[^\d]\d{1,2}[^\d]\d{4,4}/gi) == null) 
       alert('Invalid date format'); 
      else { 
       var t = this.value.split(/[^\d]/); 
       var dd = parseInt(t[0], 10); 
       var m0 = parseInt(t[1], 10) - 1; // Month in JavaScript Date object is 0-based 
       var yyyy = parseInt(t[2], 10); 
       var d = new Date(yyyy, m0, dd); // new Date(2017, 13, 32) is still valid 
       if(d.getDate() != dd || d.getMonth() != m0 || d.getFullYear() != yyyy) 
        alert('Invalid date value'); 
      } 
     }); 
}); 
Смежные вопросы