从数据库中禁用日期时,Datepicker不显示

时间:2013-10-12 10:07:48

标签: jquery json date-format

我在jQuery datepicker中禁用某些日期时遇到问题。我成功地从webmethod中的字符串数组中的数据库中检索日期。现在通过java脚本函数我试图禁用这些日期。由于这个原因,页面上还有另一个日期选择器。

$.ajax({
        type: "POST",
        url: "attendentry.aspx/GetALLPresentsDates",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            var result = msg.d;
            var unavailableDates = [];
            var len = result.length;
            for (var i = 0; i < len; i++) {
                unavailableDates.push(result[i]);
            }

        },
        error: function (msg) {
        }
    }); 

    function unavailable(date) {
    //    var unavailableDates = ["9-17-2013", "9-20-2013", "10-1-2013"]
    var  dmy = (date.getMonth() + 1) + "-" + date.getDate() + "-" + date.getFullYear();
        if ($.inArray(dmy, unavailableDates) == -1) {
            return [true, ""];
        } else {
            return [false, "", "Unavailable"];
        }
    }

    $(function () {
        $("#datepicker1").datepicker({
            minDate: '-30',
            maxDate: '0',
            dateFormat: 'mm-dd-yy',
            beforeShowDay: unavailable,
            onSelect: function (dateText, inst) {
                $("#<%=txtPresent.ClientID%>").val(dateText);
            }
        });
          });

WebeMethod是:

[WebMethod]
public static string[] GetALLPresentsDates()
{
    DataTable dt = new DataTable();
    List<String> dates = new List<String>();
    SqlConnection con = new SqlConnection(Helper.ConnectionString);
    SqlCommand cmd = new SqlCommand("SELECT Emp_PresentDate FROM Emp_Attendance", con);
    SqlDataAdapter da;
    da = new SqlDataAdapter(cmd);
    dt.Clear();
    da.Fill(dt);
    for (int i = 0; i < dt.Rows.Count - 1; i++)
    {
        dates.Add((String.Format("{0:M-d-yyyy}", dt.Rows[i][0])));
    }

    return dates.ToArray();
}

1 个答案:

答案 0 :(得分:0)

用此更新您的unavailable功能。假设您从服务返回的日期格式是m-d-yy,而不是月和日的前导零。如果不是这种情况,则需要使用正确的格式更新formatDate参数('m-d-yy')。

function unavailable(date) {
    return [ unavailableDates.indexOf(jQuery.datepicker.formatDate('m-d-yy', date)) === -1 ];
}