我在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();
}
答案 0 :(得分:0)
用此更新您的unavailable
功能。假设您从服务返回的日期格式是m-d-yy,而不是月和日的前导零。如果不是这种情况,则需要使用正确的格式更新formatDate
参数('m-d-yy'
)。
function unavailable(date) {
return [ unavailableDates.indexOf(jQuery.datepicker.formatDate('m-d-yy', date)) === -1 ];
}