2011-10-13 57 views
2

如何解析字符串是否有效的日期。我嘗試了一切在網絡中,沒有任何工作。我知道這個問題以前曾被多次提出過,但即使是在說他們解決了問題的線程中,也不會爲我工作。我開始問自己有沒有辦法。 我會在這裏發送我的代碼。我有三個文本框:一天,一個月和一年,並在表單提交我需要檢查他們是否形成有效日期。如何驗證字符串是否與日期jquery

<html> 
    <head> 
    <title>Simple Form Validation</title> 
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> 
    <script type="text/javascript" src="http://dev.jquery.com/view/trunk/plugins/validate/jquery.validate.js"></script> 
    <script type="text/javascript"> 

     jQuery.validator.addMethod(
       "customDateValidator", 
       function(value, element) { 
       var concateDate; 
       concateDate= $("#day").val() + "/" + $("#month").val() + "/" + $("#year").val();   

        var rslt= (Date.parseExact(concateDate, "d/M/yyyy")); 
        if(isNaN(rslt)) 
         return false; 
        else 
        return true;    
        }, 
        "Please enter a valid date" 
       ); 
    </script> 

    <script type="text/javascript"> 
    $(document).ready(function() { 
     $("#form1").validate({ 
     rules: { 

     year: { 
      customDateValidator: true 
     } 
     }, 
     messages: { 
      year: "Please enter valid datum." 
     } 
     }); 
    }); 
    </script> 

    </head> 

    <body> 
    <form id="form1" method="post" action=""> 
     <div class="form-row"><span class="label">Day *</span><input type="text" name="day" id="day" /></div> 
     <div class="form-row"><span class="label">Month *</span><input type="text" name="month" id="month" /></div> 
     <div class="form-row"><span class="label">Year</span><input type="text" name="year" id="year" /></div> 
     <div class="form-row"><input class="submit" type="submit" value="Submit"></div> 
    </form> 
    </body> 
</html> 

回答

4

這就是我如何做,它運作良好。

rules: { 
    month: { required: true }, 
    day: { required: true }, 
    year: { required: true, date_check: function(){ return $("#month").val()+'/'+$("#day").val()+'/'+$("#year").val() } } 
} 

jQuery.validator.addMethod("date_check",function(a,b,c){ 
    month = c.substring(0,2)-1; 
    day = c.substring(3,5); 
    year = c.substring(6,10); 
    mSeconds = (new Date(year, month, day)).getTime(); 
    objDate = new Date(); 
    objDate.setTime(mSeconds); 
    if(objDate.getFullYear() != year || objDate.getMonth() != month || objDate.getDate() != day) { 
     return false; 
    } 
    return true; 
}, "Please provide a valid date."); 
+0

非常感謝你 – user152508

+0

但它不支持全球化。 OP使用的是dd/mm/yyyy,在此答案中使用的是mm/dd/yyyy。 – Jeroen

+0

然後修改它以供您使用?這並不難。 –

相關問題