温馨提示:本文翻译自stackoverflow.com,查看原文请点击:javascript - make available selected date dependant on day of order
html javascript

javascript - 根据订单日期提供选定的日期

发布于 2020-03-27 11:39:43

我正在为我的网站订购表格。对于订单,要求有4天的明确通知时间(即星期一为星期五,星期二为星期六等),但是对于星期六和星期日下达的订单,他们可以得到的最少天数是下一个星期四。还不允许他们选择星期日作为交货日。

这是我的日期字段:

<p>What date is this required for?</p>
<p>Please note, we need 4 days clear notice(Monday-Friday)</p>
<input id="datefield" name="date" type='date' onkeydown="return false" min='2019-05-10' max='2000-13-13'></input>

到目前为止,这是我没有让他们选择星期天并提前4天进行最早日期选择的js。

<script>
var date = document.querySelector('[type=date]');

function noSundays(e){

    var day = new Date( e.target.value ).getUTCDay();

    // Days in JS range from 0-6 where 0 is Sunday and 6 is Saturday

    if( day == 0 ){

        e.target.setCustomValidity('Unfortunately we cannot deliver cakes on a Sunday, please select another day');

    } else {

        e.target.setCustomValidity('');

    }

}

date.addEventListener('input',noSundays);

</script>

<script>

var today = new Date();
var dd = today.getDate()+4;
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();
 if(dd<10){
        dd='0'+dd
    } 
    if(mm<10){
        mm='0'+mm
    } 

today = yyyy+'-'+mm+'-'+dd;
document.getElementById("datefield").setAttribute("min", today);

</script>

所以这很好并且可行,但是如果他们订购的日期是他们可以选择的最短日期是下一个星期四的星期六或星期日,我将如何处理条件?

查看更多

查看更多

提问者
Lewis Ross
被浏览
11
Lewis Ross 2019-07-04 16:48

通过执行以下操作设法使其正常工作:

   var today  = new Date();     // current date/time    
    var dd = today.getDate();
    var mm = today.getMonth()+1; //January is 0!
    var yyyy = today.getFullYear();

     if(dd<10){
        dd='0'+dd
    } 


    if(mm<10){
        mm='0'+mm
    } 

    if (dd == "03" || dd =="04" || dd=="5" || dd=="06") {
    dd = today.getDate()+5;

     if(dd<10){
        dd='0'+dd
    } 
    today = yyyy+'-'+mm+'-'+dd;
    document.getElementById("datefield").setAttribute("min", today);

    } 
     else {
      dd = today.getDate()+4;
     if(dd<10){
     dd='0'+dd
    }
    today = yyyy+'-'+mm+'-'+dd;
    document.getElementById("datefield").setAttribute("min", today);


    }

可能不是最好的方法,但它可行