0

我在 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();
}
4

1 回答 1

0

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

function unavailable(date) {
    return [ unavailableDates.indexOf(jQuery.datepicker.formatDate('m-d-yy', date)) === -1 ];
}
于 2013-10-12T13:46:45.947 回答