前端人员的恨
最近在对公司OA系统做合并和更新,我发现顺利用了N年的一些js代码居然没有作用了~~比如日期验证之类~~
在重新测试的时候,发现了Date.parse(datestr)这个函数如果datestr的格式不对,在不同浏览器也是不同的表现
yyyy-mm-dd的格式 IE chorme FF ok safari 显示Nan
转换成了 yyyy/mm/dd 的格式就都有效,在目前的浏览器众多的情况下,用js 框架就不失为一个快捷的解决办法
比如Jquery: http://docs.jquery.com/UI/Datepicker/parseDate
function isDate(v) { var r = v.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); if(r==null) return false; var d = new Date(r[1], r[3]-1,r[4]); return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]); } function Dateok() { var start =document.getElementById("rest_start").value; var end=document.getElementById("rest_end").value; if (isDate(start)) { if (isDate(end)) { //因为各浏览对时间有效格式不同,所以要转换成yyyy/mm/dd 兼容chrome IE safari FF start=start.replace("-", "/").replace("-", "/"); end=end.replace("-", "/").replace("-", "/"); if(Date.parse(start)-Date.parse(end)>0) { alert("起始日期不能晚于结束日期!"); return false; } else { alert((Date.parse(start)-Date.parse(end)).ToString()); return true; } } else { alert("结束日期有误,请用yyyy-mm-dd格式填写或选择!"); return false; } } else { alert("开始日期有误,请用yyyy-mm-dd格式填写或选择!"); return false; } }