1

JavaScriptを使用して、選択した日付が今日より前ではないことを検証しようとしていますが、今日の日付を選択すると、アラートボックスが表示されます。

JavaScript:

function checkDueDate(sender, args) {
    var td = new Date(); 
    td.setMinutes(59);
    td.setSeconds(59);
    td.setHours(23);
    //to move back one day
    td.setDate(td.getDate() - 1);

    if (sender._selectedDate < td) {
        alert("You can't select day from the past! " + td + "");
        sender._selectedDate = new Date();
        // set the date back to the current date
        sender._textbox.set_Value(sender._selectedDate.format(sender._format))
    }

ASP.NET:

        <asp:TextBox ID="txtDueDate" runat="server"></asp:TextBox>
        <asp:CalendarExtender ID="txtDueDate_CalendarExtender" runat="server" 
            TargetControlID="txtDueDate" OnClientDateSelectionChanged="checkDueDate">
        </asp:CalendarExtender>

画像

4

3 に答える 3

2

多分あなたは物事を複雑にしすぎていると思います。1日をミリ秒で引くだけで、うまくいくはずです。

function isPast( date ) {
  return date.getTime() < (new Date().getTime() - 864e5); 
}

デモ: http: //jsbin.com/igeyov/1/edit

于 2012-11-08T05:07:24.263 に答える
0

ここにあるロジックは、まさにあなたが望むことをしているようです - 評価する td 変数を今日の日付の最後の可能な秒に設定し、選択した日付がそれより前か等しいかどうかをチェックしています。今日の日付は、今日の 23:59:59 の「前か等しい」...

また、これを c# でタグ付けしましたが、私が知る限り、それはすべて javascript と ASP.net です。

于 2012-11-08T05:00:34.083 に答える
0

将来の日付のみを選択したい場合は、このコードも試すことができます....これはajaxカレンダーで動作しています:

 function checkDate(sender, args) {
        if (sender._selectedDate < new Date()) {
            alert("You can select only future day!");
            sender._selectedDate = new Date();
            // set the date back to the current date
            sender._textbox.set_Value(sender._selectedDate.format(sender._format))
        }
    }

HTMLコードは次のとおりです。

 <asp:TextBox ID="txtDOB" Width="180px" MaxLength="50" runat="server"></asp:TextBox>
                            <ajaxctrl:calendarextender onclientdateselectionchanged="checkDate" id="cale_txtDOB"
                                runat="server" targetcontrolid="txtDOB" format="MM/dd/yyyy" cssclass="cal_Theme1">
                            </ajaxctrl:calendarextender>

このコードは、過去の日付を選択した場合にのみ機能し、「過去の日付を選択できない」というポップアップが表示されます。更新されたコード:今日の日付も含めたくない場合のコード作業は次のとおりです。将来の日付のみが必要です。

function checkDate(sender, args) {
        if (sender._selectedDate <= new Date()) {
            alert("You can select only future day!");
            sender._selectedDate = new Date();
            // set the date back to the current date
            //sender._textbox.set_Value(sender._selectedDate.format(sender._format))
        }
    }

これがあなたを助けることを願っています..

于 2012-11-08T05:03:25.843 に答える