Javascript 完整日历';s事件更改视图后单击“不工作”
假设我想在用户单击FullCalendar的事件时打开一个模式弹出窗口,我在FullCalendar的“eventClick”部分编写了一些逻辑。在我进入默认视图(我将其设置为“月”)之前,这一切都很正常 但是,如果我尝试从一个视图切换到另一个视图,它不会被解雇,就像它死了一样 我做错了什么?这是我的完整日历的代码。我还尝试根据文档添加viewRender事件,但它不起作用Javascript 完整日历';s事件更改视图后单击“不工作”,javascript,jquery,calendar,fullcalendar,Javascript,Jquery,Calendar,Fullcalendar,假设我想在用户单击FullCalendar的事件时打开一个模式弹出窗口,我在FullCalendar的“eventClick”部分编写了一些逻辑。在我进入默认视图(我将其设置为“月”)之前,这一切都很正常 但是,如果我尝试从一个视图切换到另一个视图,它不会被解雇,就像它死了一样 我做错了什么?这是我的完整日历的代码。我还尝试根据文档添加viewRender事件,但它不起作用 function initCalendar2(oggetti){ debugger; $('.calend
function initCalendar2(oggetti){
debugger;
$('.calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
//right: 'month,agendaWeek,agendaDay,' +vistaAgenda
right: 'month,agendaWeek,agendaDay,listDay,listWeek'
},
views: {
listDay: { buttonText: 'Lista Giorno'},
listWeek: { buttonText: 'Lista Sett'}
},
eventClick: function(calEvent, jsEvent, view) {
debugger;
//Send 2 values to the modal
$("#dataArrivo").val(calEvent.start.toISOString().split('T')[0]);
$("#dataConsegna").val(calEvent.end.toISOString().split('T')[0]);
//Opens the modal
var targeted_popup_class = $(this).attr('data-popup-open');
$('[data-popup="' + targeted_popup_class + '"]').fadeIn(350);
//e.preventDefault();
var newDateOne;
var newDateTwo;
//This triggers only when the save button of the modal is clicked
setTimeout(function() {
$("#save").click(function() {
var tmp1 = $("#dataArrivo").val();
var tmp2 = $("#dataConsegna").val();
newDateOne = new Date(tmp1);
newDateOne.setDate(newDateOne.getDate());
newDateTwo = new Date(tmp2);
newDateTwo.setDate(newDateTwo.getDate());
var tmp = calEvent.id.split("&");
var idToSend = "";
for (var i = 0; i < tmp.length-1; i++) {
if (i == tmp.length-2) {
idToSend += tmp[i];
} else {
idToSend += tmp[i]+"&";
}
} if (newDateOne !== calEvent.start || newDateTwo !== calEvent.end) {
var actualDate = new Date(calEvent.start);
debugger;
//This ajax call will save the event's new dates in the DB
$.ajax({
url: 'calendariomanagement/listaPraticheFormJSONByIdProgettoCommittenteAndTipoVal/'+ idToSend +'/modDate/' + nuovaDataArrivo.toDateString() + '&' + nuovaDataConsegna.toDateString() + '&' + actualDate.toDateString(),
type:'POST',
async:false,
success: function(data) {
var targeted_popup_class = $(this).attr('data-popup-close');
$('[data-popup="' + targeted_popup_class + '"]').fadeOut(350);
location.reload();
/*calEvent.start = dataUno;
calEvent.end = dataDue;
$('#calendar').fullCalendar('updateEvent', calEvent);*/
}
});
}
}), 350}
);
},
viewRender: function(view, element) {
debugger;
$('#calendar').fullCalendar('rerenderEvents');
},
locale: 'it',
defaultView: 'month',
defaultDate: moment(),
navLinks: true, // can click day/week names to navigate views
editable: false,
eventDurationEditable: false,
//weekends:false,
eventLimit: true, // allow "more" link when too many events
events: oggetti
});
函数initCalendar2(oggetti){
调试器;
$('.calendar').fullCalendar({
标题:{
左:“上一个,下一个今天”,
中心:'标题',
//右图:“月,agendaWeek,agendaDay,”+vistaAgenda
右图:“月、agendaWeek、agendaDay、listDay、listWeek”
},
观点:{
listDay:{buttonText:'Lista Giorno'},
listWeek:{buttonText:'Lista Sett'}
},
eventClick:函数(calEvent、jsEvent、view){
调试器;
//将2个值发送到模式
$(“#dataArrivo”).val(calEvent.start.toISOString().split('T')[0]);
$(“#dataConsegna”).val(calEvent.end.toISOString().split('T')[0]);
//打开模式对话框
var targeted_popup_class=$(this.attr('data-popup-open');
$(“[data popup=“”+targeted_popup_class+”).fadeIn(350);
//e、 预防默认值();
var-newDateOne;
var-newDateTwo;
//这仅在单击模式的“保存”按钮时触发
setTimeout(函数(){
$(“#保存”)。单击(函数(){
var tmp1=$(“#dataArrivo”).val();
var tmp2=$(“#dataConsegna”).val();
newDateOne=新日期(tmp1);
setDate(newDateOne.getDate());
newDateTwo=新日期(tmp2);
setDate(newDateTwo.getDate());
var tmp=calEvent.id.split(“&”);
var idToSend=“”;
对于(变量i=0;i
为任何可能遇到类似问题的人放在这里。
这是我用HTML定义的模式弹出窗口
<!-- Modal -->
<div id="myModal" class="modal fade" role="dialog">
<div class="modal-dialog">
*<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Cambio data</h4>
</div>
<div class="modal-body">
<p> Inserire i nuovi valori nel formato anno-mese-giorno (es.: 2018-07-03). Nel
caso non si volesse modificare nessun campo, semplicemente chiudere questo pop-up</p>
<label for="arrivo">Data Arrivo:</label>
<input type="text" name="dataArrivo" id="dataArrivo" class="form-control">
<label for="consegna">Data Riconsegna:</label>
<input type="text" name="dataConsegna" id="dataConsegna" class="form-control">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Chiudi</button>
<button type="button" class="btn btn-default" id="save" data-dismiss="modal">Salva</button>
</div>
</div>
但当然,在更改视图后,这些属性丢失了,没有机会重新插入它们。作为一种解决方案(ADyson指出),解决方法是使用bootbox对象定义一个模式,这样我就可以动态地使用它;在viewRender中不需要,fullCalendar将自动执行此操作。同时,我从未听说过仅仅因为视图更改而导致eventClick不工作的情况。您确定这就是问题所在,还是您放置在eventClick中的代码中的某个内容导致了问题?您没有向我们展示,因此这是不可能的可以进行注释,但您应该在代码中设置断点以确定确切的故障点。这是什么版本的fullCalendar?单击事件时是否出现任何控制台错误或警告?好的,我正在添加整个逻辑!我使用的版本是最新版本。在进行此操作之前,请执行我建议的调试-逐步检查代码,直到出现问题,并检查控制台错误等。您可能会更容易找到问题。当然,我在发布之前已经尝试过这种方法,但我什么也找不到。eventclick logic Added如果您已经完成了调试,那么这是否意味着您说
eventclick
中的代码永远不会出现在视图更改后执行?没有?当您单击事件时,它从未进入该功能?
$(".fc-content").attr('data-toggle', 'modal');
$(".fc-content").attr('data-target','#myModal');