Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 日期函数不能正常工作_Javascript_Asp.net_Ajax_Ajaxcontroltoolkit - Fatal编程技术网

Javascript 日期函数不能正常工作

Javascript 日期函数不能正常工作,javascript,asp.net,ajax,ajaxcontroltoolkit,Javascript,Asp.net,Ajax,Ajaxcontroltoolkit,在我的asp网页中,我使用ajax日历选择日期。我不希望用户选择过去日期或当前日期,也不希望用户选择距离当前日期超过20天的日期 var today = new Date(); var twentyDays = new Date(); twentyDays.setDate(today.getDate() + 20); if (selectedDate.getDateOnly() <= todayDate.getDat

在我的
asp
网页中,我使用
ajax
日历选择日期。我不希望用户选择过去日期或当前日期,也不希望用户选择距离当前日期超过20天的日期

var today = new Date();
            var twentyDays = new Date();
            twentyDays.setDate(today.getDate() + 20);

            if (selectedDate.getDateOnly() <= todayDate.getDateOnly())
            {
                alert('Date Cannot be in the past or current date');
                sender._textbox.set_Value(null);
            }
            else if (selectedDate.getDateOnly() > twentyDays.getDateOnly())
            {
                alert('this is more than 20 days');
                sender._textbox.set_Value(null);
                return;
            }
var today=新日期();
var twentyDays=新日期();
二十天.setDate(今天.getDate()+20);
if(selectedDate.getDateOnly()twentyDays.getDateOnly())
{
警报(“超过20天”);
发送方._文本框.设置_值(空);
返回;
}
但它没有比较日期。。 这是我的asp代码

<asp:TextBox ID="txtDate" runat="server" ></asp:TextBox>
<asp:ImageButton ID="imgCalender" runat="server" ImageUrl="~/Images/Calendar.png" ToolTip="Select a Date" />
 <asp:CalendarExtender ID="calShow"  runat="server" PopupButtonID="imgCalender" PopupPosition="BottomLeft" TargetControlID="txtDate" OnClientDateSelectionChanged="CheckForPastDate"></asp:CalendarExtender>

我建议使用服务器端逻辑来处理此问题,而不是使用JavaScript,因为今天是
。当日期导致日期与今天不在同一年(即每年的12月30日)时,getDate()+20
将不起作用

而是使用.NET Framework的
DateTime
对象添加天数,并通过ASP.NET AJAX页面方法进行比较,如下所示:

代码隐藏:

[WebMethod]
public static string CompareDate(string theDateToCompare)
{
    DateTime dateValue;

    if (DateTime.TryParse(dateString, out dateValue))
    { 
        DateTime today = DateTime.Now;
        DateTime twentyDaysFromNow = today.AddDays(20);

        if(dateValue <= today)
        {
            return "Date cannot be in the past or current date"; 
        }
        else if (dateValue > twentyDaysFromNow)
        {
            return "Date cannot be more than 20 days in the future";
        }
    }
    else
    {
        return "Unable to parse " + dateString; 
    }
}

注意:您需要将
PageName.aspx
的名称更改为.aspx页面的名称。另外,
.d
语法是微软在ASP.NETAJAX的ASP.NET3.5版本中提供的一种反XSS保护;因此,请检查
.d
属性是否存在


试着去掉
getDateOnly()
,据我所知,它不是javascript日期对象的一部分,使用
getTime()

一个javascript日期对象没有
。getDateOnly()
方法?我该怎么办?但当我在VisualStudio中右击代码时,它显示在选项中。当我没有添加这一行var twentyDays=newdate()时,它也可以正常工作;二十天.setDate(今天.getDate()+20);如果你的ASP日历有这样一个方法,很好,但是date对象没有,你必须使用
twentyDays.getDate()
,但是我如何才能获得所选的日期。我不知道如何在ajax日历控件中检索所选的日期。你能解释一下吗?你会发现date对象可以很好地处理年份的变化
getDate
只返回月份的某一天…这不是有效的测试
$(document).ready(function() {
    // Add selector event here to trigger call to server side
    $.ajax({
        type: "POST",
        url: "PageName.aspx/CompareDate",
        data: "{'CompareDate':'11/30/2013'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(result) {
            if (result.hasOwnProperty("d")) {
                // The .d is part of the result so reference it
                //  to get to the actual JSON data of interest
                alert(result.d);
            }
            else {
                // No .d; so just use result
                alert(result);
            }
       }
    });
});