Jquery datepicker: подтверждение даты
i задал класс jquery:
$(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);
};
А какой плагин я должен включить в раздел главы?
Ответы
Ответ 1
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] Почему Date.parse дает неверные результаты?
Ответ 2
Вы можете подтвердить дату следующими способами (вам не нужен плагин): -
$(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);
}
});
});
Рабочая скрипка
ОБНОВЛЕНИЕ: Правильный подход упоминается @Razan Paul
Ответ 3
Date.parse() не поддерживает dd/mm/yyyy, а 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');
}
});
});
Ответ 4
Все ответы даны для DatePicker
http://keith-wood.name/uiDatepickerValidation.html
Ответ 5
$(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
});
Примечание: -Вы находитесь в имени вашего поля и datepick - это имя вашего плагина.