簡體   English   中英

如何使用 Jquery 驗證日期是否出現在兩個日期之間?

[英]How can I validate if a date occurs between two dates with Jquery?

我想檢查一個日期是否發生在兩個日期之間。 如果此日期發生在這兩個日期之間,則函數應返回 true,否則應返回 false。

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

<script>
    function dateCheck() {
        var fDate,lDate,cDate;
        fDate = jQuery.datepicker.formatDate('dd-mm-yy', new Date()); // firstdate
        cDate = jQuery.datepicker.parseDate('dd-mm-yy', 
        jQuery('#challenge_date').val()); // date from form
        lDate =  jQuery.datepicker.formatDate('dd-mm-yy', new Date());
        lDate.setDate(lDate.getDate() + 7); // lastdate

        if((cDate <= lDate && cDate >= fDate)) {
            alert("true");
            return true;
        }

        alert("false");
        return false;
    }
</script>

<form action="#" method="post" onsubmit="return dateCheck()">
    <input type="date" name="challenge_date" id="challenge_date">
    <input type="submit" value="check">
</form>

誰能指出我在正確方向上推動我的錯誤?

您正在使用 html 本機日期輸入類型。 因此無需使用 jQuery datepicker API。 只需從輸入值創建日期對象並與其他日期對象進行比較。

 function dateCheck() { var fDate,lDate,cDate; fDate = new Date(); // firstdate cDate = new Date($('#challenge_date').val()); // date from form lDate = new Date(); lDate.setDate(lDate.getDate() + 7); // lastdate if(Date.parse(cDate) <= Date.parse(lDate) && Date.parse(cDate) >= Date.parse(fDate)){ alert("true"); return true; } alert("false"); return false; }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form action="#" method="post" onsubmit="return dateCheck()"> <input type="date" name="challenge_date" id="challenge_date"> <input type="submit" value="check"> </form>

日期函數不支持 dd/mm/yyyy。 所以試試這個

function dateCheck() {
        var fDate,lDate,cDate;
        fDate = jQuery.datepicker.formatDate('dd-mm-yy', new Date()); // firstdate

        cDate = jQuery.datepicker.parseDate('dd-mm-yy', jQuery('#challenge_date').val()); // date from form

        lDate =  jQuery.datepicker.formatDate('dd-mm-yy', new Date());

        var dateFrom = fDate.split("-");
        var dateTo = lDate.split("-");
        var dateCheck = cDate.split("-");

        var from = new Date(dateFrom[2], parseInt(dateFrom[1])-1, dateFrom[0]);  // -1 because months are from 0 to 11
        var to   = new Date(dateTo[2], parseInt(dateTo[1])-1, dateTo[0]);
        var check = new Date(dateCheck[2], parseInt(dateCheck[1])-1, dateCheck[0]);

        if((check <= to && check >= from)) {
            alert("true");
            return true;
        }

        alert("false");
        return false;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM