2011-05-24 126 views
0

我需要JavaScript样本代码来验证日期格式为mm-dd-yyyy。使用javascript进行日期验证

1)如果用户输入错误的日期就上述日期格式。

2)日期范围验证,开始日期和结束日期范围验证。

对此的任何帮助表示赞赏。

问候, Chaitu

+4

你试过什么吗?甚至在互联网上搜索这个? – 2011-05-24 11:51:52

+1

你到目前为止尝试过什么?你碰到什么方法和什么问题? – Xhalent 2011-05-24 11:52:42

+0

使用StackOverflow.com的内置善良和搜索[“数据验证JavaScript”](http://stackoverflow.com/search?q=date%20validation%20javascript)或[“javascript数据验证范围”](http: //stackoverflow.com/search?q=javascript%20date%20validation%20range)。用不同的方法找到好的答案,如: - http://stackoverflow.com/questions/2271389/validation-for-date - http://stackoverflow.com/questions/2227447/date-validation - http:// stackoverflow。 com/questions/240293/date-parsing-and-validation-in-javascript - http://stackoverflow.com/questions/5755327/date-range-restriction – haylem 2011-05-24 12:00:34

回答

1

验证的格式可能是这样的:

function isValidDateFormat(s) { 
    return /^\d\d-\d\d-\d\d\d\d$/.test(s); 
} 

的日期范围,将字符串转换为Date对象,并把它比作约会对象的范围限制。

这里有一个日期验证功能 - 无需检查输入的格式,如果它是错的,函数返回false:

// Expects date in US-specific mm-dd-yyyy or 
// mm/dd/yyyy format 
function isValidDate(d) { 
    var bits = d.split(/[-/]/); 
    var date = new Date(bits[2] + '/' 
        + bits[0] + '/' 
        + bits[1]); 
    return date && (date.getMonth()+1) == bits[0] 
       && date.getDate() == bits[1]; 
} 

好,你现在如何验证格式,如何验证日期以及如何将字符串转换为日期对象。从这里进行比较应该非常简单。

+0

即使使用有效的日期字段,它总是会重新调整flase。 – user569125 2011-05-24 13:23:10

0

详细的一个,我用几年前...

<script language = "Javascript"> 
    var dtCh= "/"; 
    var minYear=1900; 
    var maxYear=2100; 

    var isInteger = function(s){ 
    var i; 
     for (i = 0; i < s.length; i++){ 
      var c = s.charAt(i); 
      if (((c < "0") || (c > "9"))) return false; 
     }  
     return true; 
    } 

    var stripCharsInBag = function(s, bag){ 
    var i; 
     var returnString = ""; 
     for (i = 0; i < s.length; i++){ 
      var c = s.charAt(i); 
      if (bag.indexOf(c) == -1) returnString += c; 
     } 
     return returnString; 
    } 

    var daysInFebruary = function(year){ 
     return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28); 
    } 

    var DaysArray = function(n) { 
    for (var i = 1; i <= n; i++) { 
     this[i] = 31 
     if (i==4 || i==6 || i==9 || i==11) {this[i] = 30} 
     if (i==2) {this[i] = 29} 
    } 
    return this 
    } 

    var isDate = function(dtStr){ 
    var daysInMonth = DaysArray(12) 
    var pos1=dtStr.indexOf(dtCh) 
    var pos2=dtStr.indexOf(dtCh,pos1+1) 
    var strMonth=dtStr.substring(0,pos1) 
    var strDay=dtStr.substring(pos1+1,pos2) 
    var strYear=dtStr.substring(pos2+1) 
    strYr=strYear 
    if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1) 
    if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1) 
    for (var i = 1; i <= 3; i++) { 
     if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1) 
    } 
    month=parseInt(strMonth) 
    day=parseInt(strDay) 
    year=parseInt(strYr) 
    if (pos1==-1 || pos2==-1){ 
     alert("The date format should be : mm/dd/yyyy") 
     return false 
    } 
    if (strMonth.length<1 || month<1 || month>12){ 
     alert("Please enter a valid month") 
     return false 
    } 
    if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){ 
     alert("Please enter a valid day") 
     return false 
    } 
    if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){ 
     alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear) 
     return false 
    } 
    if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){ 
     alert("Please enter a valid date") 
     return false 
    } 
    return true 
    } 

    var ValidateForm = function(){ 
    var dt=document.frmSample.txtDate 
    if (isDate(dt.value)==false){ 
     dt.focus() 
     return false 
    } 
     return true 
    } 

</script> 

及表演一些HTML的:

<form method="get" onSubmit="return ValidateForm()"> 
    <p>Enter a Date <b>(mm/dd/yyyy)</b>: <input type="text" name="txtDate" maxlength="10" size="15"></p> 
    <p><input type="submit" value="Submit"></p> 
</form> 
+0

忘了添加'','','','<body>'标签,那么它将是一个完整的页面。准备运行。 – <span class="text-secondary"> <small> <span>2011-05-24 12:05:55</span> </small> </span> </p> </div> </div> </div> <div itemprop="comment" class="post-comment"> <div class="row"> <div class="col-lg-1"><span class="text-secondary">+0</span></div> <div class="col-lg-11"> <p class="commenttext">你一定是在开玩笑吧!日期验证可以用几行完成。将字符串转换为日期,测试日期对象的任何两个部分是否与日期字符串的任何两个部分(比如日期和月份)匹配。如果他们这样做,这是一个有效的日期。如果不是,那不是。 – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/257182/">RobG</a></span> <span>2011-05-24 12:41:10</span> </small> </span> </p> </div> </div> </div> <div itemprop="comment" class="post-comment"> <div class="row"> <div class="col-lg-1"><span class="text-secondary">+0</span></div> <div class="col-lg-11"> <p class="commenttext">我需要验证格式为yyyy-mm-dd格式。 – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/569125/">user569125</a></span> <span>2011-05-24 14:36:50</span> </small> </span> </p> </div> </div> </div> </div> </div> </article> <article class="board-top-1 padding-top-10"> <div class="post-col vote-info"> <span class="count">-2<i class="fa fa-thumbs-up"></i></span> </div> <div class="post-offset"> <div class="answer fmt"> <p>您可以使用JavaScript或使用范围验证。</p> <p><a href="http://willmtz.blogspot.com/2011/10/date-validation-javascript-vs-code.html" rel="nofollow">Check out this link for an example of both techniques</a></p> </div> <div class="post-info"> <div class="post-meta row"> <p class="text-secondary col-lg-6"> <span class="source"> <a rel="noopener" target="_blank" href="https://stackoverflow.com/q/8041111">来源</a> </span> </p> <p class="text-secondary col-lg-6"> <span class="float-right date"> <span>2011-11-07 18:50:51</span> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/1034270/">JamesL</a></span> </p> <p class="col-12"></p> <p class="col-12"></p></div> </div> <!-- comments --> <div class="comments"> <div itemprop="comment" class="post-comment"> <div class="row"> <div class="col-lg-1"><span class="text-secondary">+1</span></div> <div class="col-lg-11"> <p class="commenttext">欢迎来到Stack Overflow!虽然这可能在理论上回答这个问题,[这将是更可取的](http://meta.stackexchange.com/q/8259)在这里包括答案的重要部分,并提供供参考的链接。 – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/419/">Kev</a></span> <span>2011-11-07 20:10:20</span> </small> </span> </p> </div> </div> </div> </div> </div> </article> </div> <div class="clearfix"> </div> <div class="relative-box"> <div class="relative">相关问题</div> <ul class="relative_list"> <li> 1. <a href="http://cn.voidcc.com/question/p-czdjbspu-qt.html" target="_blank" title="使用javascript验证日期?"> 使用javascript验证日期? </a> </li> <li> 2. <a href="http://cn.voidcc.com/question/p-wjwjbqfs-cn.html" target="_blank" title="使用javascript验证日期"> 使用javascript验证日期 </a> </li> <li> 3. <a href="http://cn.voidcc.com/question/p-pdnfaptz-r.html" target="_blank" title="在JavaScript中使用.js文件进行日期验证"> 在JavaScript中使用.js文件进行日期验证 </a> </li> <li> 4. <a href="http://cn.voidcc.com/question/p-hlypcrni-eo.html" target="_blank" title="使用JavaScript进行客户端日期验证"> 使用JavaScript进行客户端日期验证 </a> </li> <li> 5. <a href="http://cn.voidcc.com/question/p-dihyovbk-mz.html" target="_blank" title="使用ASP.NET验证器进行日期验证"> 使用ASP.NET验证器进行日期验证 </a> </li> <li> 6. <a href="http://cn.voidcc.com/question/p-dkxlwdgl-gd.html" target="_blank" title="使用ASP.NET验证器进行日期验证"> 使用ASP.NET验证器进行日期验证 </a> </li> <li> 7. <a href="http://cn.voidcc.com/question/p-gjnjcasf-vm.html" target="_blank" title="使用JavaScript进行验证"> 使用JavaScript进行验证 </a> </li> <li> 8. <a href="http://cn.voidcc.com/question/p-fcdkbncj-qh.html" target="_blank" title="JavaScript - 验证日期"> JavaScript - 验证日期 </a> </li> <li> 9. <a href="http://cn.voidcc.com/question/p-wbfrbosx-pp.html" target="_blank" title="Javascript日期验证"> Javascript日期验证 </a> </li> <li> 10. <a href="http://cn.voidcc.com/question/p-apgaljls-m.html" target="_blank" title="日期验证JavaScript"> 日期验证JavaScript </a> </li> <li> 11. <a href="http://cn.voidcc.com/question/p-scsrgjlu-vu.html" target="_blank" title="javascript日期验证"> javascript日期验证 </a> </li> <li> 12. <a href="http://cn.voidcc.com/question/p-trijhtwc-kn.html" target="_blank" title="JavaScript验证日期"> JavaScript验证日期 </a> </li> <li> 13. <a href="http://cn.voidcc.com/question/p-elkfizzg-cv.html" target="_blank" title="在Visual Basic中进行日期验证"> 在Visual Basic中进行日期验证 </a> </li> <li> 14. <a href="http://cn.voidcc.com/question/p-dsfxyvou-sc.html" target="_blank" title="JS进行验证日期范围"> JS进行验证日期范围 </a> </li> <li> 15. <a href="http://cn.voidcc.com/question/p-gfgwzfov-oh.html" target="_blank" title="使用jQuery验证的日期验证"> 使用jQuery验证的日期验证 </a> </li> <li> 16. <a href="http://cn.voidcc.com/question/p-rekajahk-ms.html" target="_blank" title="JavaScript的日期验证"> JavaScript的日期验证 </a> </li> <li> 17. <a href="http://cn.voidcc.com/question/p-fmgoddtu-on.html" target="_blank" title="Javascript日期验证的Asp.net"> Javascript日期验证的Asp.net </a> </li> <li> 18. <a href="http://cn.voidcc.com/question/p-whipjsgw-qc.html" target="_blank" title="在javascript中验证日期"> 在javascript中验证日期 </a> </li> <li> 19. <a href="http://cn.voidcc.com/question/p-xohoebwv-kk.html" target="_blank" title="JavaScript简单日期验证"> JavaScript简单日期验证 </a> </li> <li> 20. <a href="http://cn.voidcc.com/question/p-wxcfhujf-qx.html" target="_blank" title="使用开关命令进行日期验证不起作用"> 使用开关命令进行日期验证不起作用 </a> </li> <li> 21. <a href="http://cn.voidcc.com/question/p-wugprmys-nx.html" target="_blank" title="如何在JavaScript中进行日期验证?"> 如何在JavaScript中进行日期验证? </a> </li> <li> 22. <a href="http://cn.voidcc.com/question/p-zqeefzry-qu.html" target="_blank" title="使用DataTypeAttribute验证日期"> 使用DataTypeAttribute验证日期 </a> </li> <li> 23. <a href="http://cn.voidcc.com/question/p-zjxuprfb-rc.html" target="_blank" title="使用moment.js验证日期"> 使用moment.js验证日期 </a> </li> <li> 24. <a href="http://cn.voidcc.com/question/p-kosdpibo-rt.html" target="_blank" title="使用CompareValidator验证日期"> 使用CompareValidator验证日期 </a> </li> <li> 25. <a href="http://cn.voidcc.com/question/p-gmzaeigi-qn.html" target="_blank" title="使用NHibernate Validator进行xVal日期验证"> 使用NHibernate Validator进行xVal日期验证 </a> </li> <li> 26. <a href="http://cn.voidcc.com/question/p-xjsnldxc-ss.html" target="_blank" title="使用jQuery进行dob年验证的日期选择器"> 使用jQuery进行dob年验证的日期选择器 </a> </li> <li> 27. <a href="http://cn.voidcc.com/question/p-njqifwxg-gy.html" target="_blank" title="CRM 4.0使用JSLint进行Javascript验证"> CRM 4.0使用JSLint进行Javascript验证 </a> </li> <li> 28. <a href="http://cn.voidcc.com/question/p-xymmecas-d.html" target="_blank" title="使用JavaScript进行表单验证"> 使用JavaScript进行表单验证 </a> </li> <li> 29. <a href="http://cn.voidcc.com/question/p-wzunmjia-ph.html" target="_blank" title="使用javascript进行PHP表单验证"> 使用javascript进行PHP表单验证 </a> </li> <li> 30. <a href="http://cn.voidcc.com/question/p-fxhlkgqi-mk.html" target="_blank" title="使用JavaScript进行字段验证 - onkeyup?"> 使用JavaScript进行字段验证 - onkeyup? </a> </li> </ul> </div> <div> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-6208739752673518" data-ad-slot="3534119089"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="padding-top-10"></div> </div> </div> <script type="text/javascript" src="http://img2.voidcc.com/voidso/script/side.js?t=1652515421853"></script> <script type="text/javascript" src="http://img2.voidcc.com/voidso/plugin/highlight/highlight.pack.js"></script> <link href="http://img2.voidcc.com/voidso/plugin/highlight/styles/docco.css" media="screen" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $('pre').each(function(i, e) { hljs.highlightBlock(e, "<span class='indent'> </span>", false) }); </script> <div class="col-lg-3 col-md-4 col-sm-5"> <div id="rightTop"> <div class="row sidebar panel panel-default"> <div class="panel-heading font-bold"> 每日一句 </div> <div class="panel-body m-b-sm m-t-sm clearfix"> 每一个你不满意的现在,都有一个你没有努力的曾经。 </div> </div> <div class="row"> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- VOIDCC问答侧边栏广告 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="3862022848" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="row sidebar panel panel-default"> <div class="panel-heading font-bold"> 最新问题 </div> <div class="m-b-sm m-t-sm clearfix"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://cn.voidcc.com/question/p-poahpzgo-vb.html" target="_blank" title="当启动vscode我的SO非常慢"> 当启动vscode我的SO非常慢 </a> </li> <li class="side_article_list_item"> 2. <a href="http://cn.voidcc.com/question/p-chfkcgve-vc.html" target="_blank" title="BotAuth与Azure表存储错误"> BotAuth与Azure表存储错误 </a> </li> <li class="side_article_list_item"> 3. <a href="http://cn.voidcc.com/question/p-gvfbaewt-ve.html" target="_blank" title="Xcode,从故事板提取视图到笔尖,最佳方法?"> Xcode,从故事板提取视图到笔尖,最佳方法? </a> </li> <li class="side_article_list_item"> 4. <a href="http://cn.voidcc.com/question/p-wmmbchfn-vd.html" target="_blank" title="试图在MAP中运行函数"> 试图在MAP中运行函数 </a> </li> <li class="side_article_list_item"> 5. <a href="http://cn.voidcc.com/question/p-hetqvoko-up.html" target="_blank" title="指定具有绝对路径的库的GCC行为是什么"> 指定具有绝对路径的库的GCC行为是什么 </a> </li> <li class="side_article_list_item"> 6. <a href="http://cn.voidcc.com/question/p-gxxiswrz-uq.html" target="_blank" title="奇怪填充用的UIButton"> 奇怪填充用的UIButton </a> </li> <li class="side_article_list_item"> 7. <a href="http://cn.voidcc.com/question/p-aoydpuww-bkx.html" target="_blank" title="快速从mysql数据库中选择最后n条记录os大小700Mb"> 快速从mysql数据库中选择最后n条记录os大小700Mb </a> </li> <li class="side_article_list_item"> 8. <a href="http://cn.voidcc.com/question/p-mjlyetku-bho.html" target="_blank" title="从textinput传递playername到其他场景 - 反应本机"> 从textinput传递playername到其他场景 - 反应本机 </a> </li> <li class="side_article_list_item"> 9. <a href="http://cn.voidcc.com/question/p-euwxvdwk-bkk.html" target="_blank" title="intellij构建包含gradle依赖项的jar工件"> intellij构建包含gradle依赖项的jar工件 </a> </li> <li class="side_article_list_item"> 10. <a href="http://cn.voidcc.com/question/p-qgrztgod-zv.html" target="_blank" title="C#LINQ - 相较于浮表"> C#LINQ - 相较于浮表 </a> </li> </ul> </div> </div> </div> <p class="article-nav-bar"></p> <div class="row sidebar article-nav"> <div class="row box_white visible-sm visible-md visible-lg margin-zero"> <div class="top"> <h3 class="title"><i class="glyphicon glyphicon-th-list"></i> 相关问题</h3> </div> <div class="article-relative-content"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://cn.voidcc.com/question/p-czdjbspu-qt.html" target="_blank" title="使用javascript验证日期?"> 使用javascript验证日期? </a> </li> <li class="side_article_list_item"> 2. <a href="http://cn.voidcc.com/question/p-wjwjbqfs-cn.html" target="_blank" title="使用javascript验证日期"> 使用javascript验证日期 </a> </li> <li class="side_article_list_item"> 3. <a href="http://cn.voidcc.com/question/p-pdnfaptz-r.html" target="_blank" title="在JavaScript中使用.js文件进行日期验证"> 在JavaScript中使用.js文件进行日期验证 </a> </li> <li class="side_article_list_item"> 4. <a href="http://cn.voidcc.com/question/p-hlypcrni-eo.html" target="_blank" title="使用JavaScript进行客户端日期验证"> 使用JavaScript进行客户端日期验证 </a> </li> <li class="side_article_list_item"> 5. <a href="http://cn.voidcc.com/question/p-dihyovbk-mz.html" target="_blank" title="使用ASP.NET验证器进行日期验证"> 使用ASP.NET验证器进行日期验证 </a> </li> <li class="side_article_list_item"> 6. <a href="http://cn.voidcc.com/question/p-dkxlwdgl-gd.html" target="_blank" title="使用ASP.NET验证器进行日期验证"> 使用ASP.NET验证器进行日期验证 </a> </li> <li class="side_article_list_item"> 7. <a href="http://cn.voidcc.com/question/p-gjnjcasf-vm.html" target="_blank" title="使用JavaScript进行验证"> 使用JavaScript进行验证 </a> </li> <li class="side_article_list_item"> 8. <a href="http://cn.voidcc.com/question/p-fcdkbncj-qh.html" target="_blank" title="JavaScript - 验证日期"> JavaScript - 验证日期 </a> </li> <li class="side_article_list_item"> 9. <a href="http://cn.voidcc.com/question/p-wbfrbosx-pp.html" target="_blank" title="Javascript日期验证"> Javascript日期验证 </a> </li> <li class="side_article_list_item"> 10. <a href="http://cn.voidcc.com/question/p-apgaljls-m.html" target="_blank" title="日期验证JavaScript"> 日期验证JavaScript </a> </li> </ul> </div> </div> </div> </div> </div> </div> </div><!-- wrap end--> <!-- footer --> <footer id="footer"> <div class="bg-simple lt"> <div class="container"> <div class="row padder-v m-t"> <div class="col-xs-8"> <ul class="list-inline"> <li><a href="http://cn.voidcc.com/contact">联系我们</a></li> <li>© 2020 CN.VOIDCC.COM</li> <li><a rel="nofollow" href="https://beian.miit.gov.cn/" target="_blank">沪ICP备13005482号-13</a></li> <li><script type="text/javascript" src="https://s9.cnzz.com/z_stat.php?id=1280098168&web_id=1280098168"></script></li> <li><a href="http://cn.voidcc.com/" target="_blank" title="程序问答园区">简体中文</a></li> <li><a href="http://hk.voidcc.com/" target="_blank" title="程序問答園區">繁體中文</a></li> <li><a href="http://ru.voidcc.com/" target="_blank" title="поле вопросов и ответов">Русский</a></li> <li><a href="http://de.voidcc.com/" target="_blank" title="Frage - und - antwort - Park">Deutsch</a></li> <li><a href="http://es.voidcc.com/" target="_blank" title="Preguntas y respuestas">Español</a></li> <li><a href="http://hi.voidcc.com/" target="_blank" title="कार्यक्रम प्रश्न और उत्तर पार्क">हिन्दी</a></li> <li><a href="http://it.voidcc.com/" target="_blank" title="IL Programma di chiedere Park">Italiano</a></li> <li><a href="http://ja.voidcc.com/" target="_blank" title="プログラム問答園区">日本語</a></li> <li><a href="http://ko.voidcc.com/" target="_blank" title="프로그램 문답 단지">한국어</a></li> <li><a href="http://pl.voidcc.com/" target="_blank" title="program o park">Polski</a></li> <li><a href="http://tr.voidcc.com/" target="_blank" title="Program soru ve cevap parkı">Türkçe</a></li> <li><a href="http://vi.voidcc.com/" target="_blank" title="Đáp ứng viên">Tiếng Việt</a></li> <li><a href="http://fr.voidcc.com/" target="_blank" title="Programme interrogation Park">Française</a></li> </ul> </div> </div> </div> </div> </div> </footer> <!-- / footer --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-77509369-5"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'UA-77509369-5'); </script> <script> var _hmt = _hmt || []; (function () { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?67d4731349f0b00136755b80364ce381"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>