好吧,这有点奇怪,我很惊讶。我想知道是否有人知道这是预期的行为还是某些错误。
在 ASP.NET MVC 应用程序上,我使用 jQuery 处理客户端事件。我有几个日期选择器,我尝试通过在日期选择器对象上使用 onSelect 属性来覆盖点击事件的标准日期颜色模式。
基本上,在 onSelect 上,我使用 AJAX 调用向服务器询问我想以确定的颜色显示的日期并更改它们(通常在将单击的日期添加到“标记”日期列表之后)。
我的代码似乎没有覆盖默认行为(当您单击某一天时,所有天都获得标准颜色,并且您单击的那一天被突出显示),而是似乎在它之后执行(因此在 datepicker 上重绘状态和颜色我的愿望)。
我发现令我惊讶的是,如果我使用 $.ajax 调用服务器,我的代码会在显示标准颜色模式的“默认行为”之前执行,但如果我使用 $.post,我的代码会在“默认行为”之后执行行为”覆盖标准颜色模式。
这是一些代码示例:
$("#diasNoLectivosHolder").datepicker({
minDate: arrayNoLaborables[0],
maxDate: arrayNoLaborables[1],
onSelect: function (fecha, calendar, event) {
$.post($.url("Grupos/diaNoLaborable/" + $("#idGrupo").val() + "/" + fecha.replace(/\//g, ".")), function (xmlResponse) {
if (xmlResponse)
$.post($.url("Grupos/obtenerDiasNoLaborables/" + $("#idGrupo").val()), function (xmlDias) {
marcarNoLaborables(xmlDias);
});
$("#fechaInicio").change();
return false;
});
return false;
},
onChangeMonthYear: function () {
$.post($.url("Grupos/obtenerDiasNoLaborables/" + $("#idGrupo").val()), function (xmlResponse) { marcarNoLaborables(xmlResponse); });
}
});
在此示例中,单击任何一天后,日历会短暂闪烁到标准颜色模式,并完成显示 my marcarNoLaborables(xmlDias); 的颜色模式。方法定义。
相反,如果我使用:
$("#diasNoLectivosHolder").datepicker({
minDate: arrayNoLaborables[0],
maxDate: arrayNoLaborables[1],
onSelect: function (fecha, calendar, event) {
$.ajax({
async: false,
cache: false,
url: $.url("Grupos/diaNoLaborable/" + $("#idGrupo").val() + "/" + fecha.replace(/\//g, ".")),
success: function (xmlResponse) {
if (xmlResponse)
$.ajax({
async: false,
cache: false,
url: $.url("Grupos/obtenerDiasNoLaborables/" + $("#idGrupo").val()),
success: function (xmlDias) {
marcarNoLaborables(xmlDias);
}
});
$("#fechaInicio").change();
return false;
}
});
return false;
},
onChangeMonthYear: function () {
$.post($.url("Grupos/obtenerDiasNoLaborables/" + $("#idGrupo").val()), function (xmlResponse) { marcarNoLaborables(xmlResponse); });
}
});
datePicker 在任何一天点击后,完成绘制“标准颜色模式”,如果我执行代码,我可以看到我修改的颜色模式适用,但在完成我的代码时,标准模式适用。
所以我的问题是......任何人都知道为什么使用 $.ajax 或 $.post 会影响代码执行时尊重“默认日期选择器行为”的那一刻?
如果我的解释不清楚,请随时提出。英语不是我的母语,有时我很难清楚地解释像这样复杂的情况。
谢谢你们。