2016-10-18 19 views
0

私はIDが "dtpicker"のdatepickerを持っています。選択した日付が現在の日付(今日)から5営業日以内の場合はアラート

選択した日付が現在の日(今日)から5営業日以内の場合は、警告のポップアップが表示されるようにする必要があります。

私はほとんど働いて解決策があります:私は今日の日付でこれをテストし、それは私が日付が2010年10月18日の間の日付ピッカーをthrought選択すると、それが仮定ほぼそのまま動作します

function DateRule() 
{ 
    var dt = new Date(); 
    dt.setDate(dt.getDate() + 5); 
    var date = dt.toISOString().substring(0, 10); 
    userdatepick = NWF$("#" + datepicker).val(); 

    if (userdatepick < date) 
    { 
    alert("Reminder: you have selected a startdate that is earlier then five workingdays from todays date") 
    } 
} 

を - 2010-10-22私は正しいアラート通知を受け取ります。私は2010-10-23を選択するとき、私はリマインダアラートを受け取ることはありませんが、それは週末の日から就業日ではないはずです。 2010-10-25リマインダの考えを与えるべきではありません。

現在の日付(今日)に5日を追加すると、週末の日数が無視されることがありますか?変数に5日を追加すると、週末にジャンプします。

ヘルプまたはヒントがあります。

+1

http://momentjs.com/を見てみましょう。日々の作業がずっと楽になります。 – Magrangs

+1

可能な複製:http://stackoverflow.com/q/6499944/1493235 – JohannesB

+0

@JohannesB thats 5歳の質問 – Obsivus

答えて

1

次のようなものを検証できます。

function validateDate(txtDate) { 
 

 
    var selectedDate = new Date(txtDate), 
 
    date = new Date(), 
 
    days = 5; 
 

 
    while (days > 0 && (date = new Date(date)) < selectedDate) { 
 
    date = date.setDate(date.getDate() + 1); 
 
    if (!isWeekend(date)) { 
 
     days -= 1; 
 
    } 
 
    } 
 

 
    if (days !== 0) { 
 
    console.log("Reminder: you have selected a startdate that is earlier then five workingdays from todays date"); 
 
    } 
 

 
} 
 

 
var isWeekend = function(date) { 
 
    var dt = new Date(date); 
 

 
    if (dt.getDay() == 6 || dt.getDay() == 0 /* check here for holidays */) { 
 
    return true; 
 
    } 
 

 
    return false; 
 
} 
 

 
validateDate("Oct 23, 2016");

+0

* setDate *メソッドは更新された日付の時刻値を返すので、 'date = date.setDate(date.getDate()+ 1);'はDateオブジェクトではなく数値に* date *を設定します。 – RobG

+0

@RobGはい、しかし、isWeekend関数では、再び日付オブジェクトを作成しています – Thaadikkaaran

+0

"We"?なぜ、 'date ='部分を削除してそれをDateとして保持しないのでしょうか? * isWeekend *で新しいDateを作成する必要はありません。 ;-) – RobG

関連する問題