jquery datepicker:validation日期
我已经设置了一个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); };
什么插件我必须包括在头部?
建议不要使用Date.parse
,因为不同主机解析日期字符串的方式仍然存在很多差异。 [1] [2]
我会用时间进行日期validation。
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会给出错误的结果?
您可以通过以下方式validation日期(您不需要插件): –
$(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提到了正确的方法
Date.parse()不支持dd / mm / yyyy和datepicker getDate在任何解析错误时将日期设置为当前因此使用新日期(yyyy,mm,dd)进行此定制检查以validation转换后日期部分是否一致:
$(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'); } }); });
$(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是你的插件名称。