Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 完整日历';s事件更改视图后单击“不工作”_Javascript_Jquery_Calendar_Fullcalendar - Fatal编程技术网

Javascript 完整日历';s事件更改视图后单击“不工作”

Javascript 完整日历';s事件更改视图后单击“不工作”,javascript,jquery,calendar,fullcalendar,Javascript,Jquery,Calendar,Fullcalendar,假设我想在用户单击FullCalendar的事件时打开一个模式弹出窗口,我在FullCalendar的“eventClick”部分编写了一些逻辑。在我进入默认视图(我将其设置为“月”)之前,这一切都很正常 但是,如果我尝试从一个视图切换到另一个视图,它不会被解雇,就像它死了一样 我做错了什么?这是我的完整日历的代码。我还尝试根据文档添加viewRender事件,但它不起作用 function initCalendar2(oggetti){ debugger; $('.calend

假设我想在用户单击FullCalendar的事件时打开一个模式弹出窗口,我在FullCalendar的“eventClick”部分编写了一些逻辑。在我进入默认视图(我将其设置为“月”)之前,这一切都很正常

但是,如果我尝试从一个视图切换到另一个视图,它不会被解雇,就像它死了一样

我做错了什么?这是我的完整日历的代码。我还尝试根据文档添加viewRender事件,但它不起作用

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">&times;</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');