【问题标题】:Datepicker not showing when disabling dates from database禁用数据库中的日期时,日期选择器不显示
【发布时间】:2013-10-12 10:07:47
【问题描述】:

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

【问题讨论】:

    标签: jquery json date-format


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      相关资源
      最近更新 更多