2013-05-08 60 views
0

所以我有这个jquery(FullCalendar),它通过数据库查询显示记录。 一切都很好,直到在这里:)fullcalendar dayclick mysqli php

现在我想要的是当人点击日期添加事件(仅启动(日期)是必需的),但后来的人必须从下拉框选择(和组合框也是通过数据库填充的),这是标题。 (?)

从我的理解我有这个使用Ajax,但我不知道如何,因为我不知道阿贾克斯..

我有这样的fullcalendar:

dayClick: function(date, allDay, jsEvent, view) { 
      if (allDay) {  
       alert('Clicked on the entire day: ' + date); 
      }else{ 
       alert('Clicked on the slot: ' + date); 
      } 
     } 

所以我假设我必须在“if(allDay){”之后调用ajax函数并准备一个带有查询的php文件,但我不知道如何在那里放置一个选项。 选择当用户点击添加运行另一个脚本添加到数据库..

具有数据库查询的组合框将具有标题。 日历仅显示月份(从月份开始的所有日期)。

对不起,如果我的英语不好!

回答

0

您可以在dayClick事件(http://api.jqueryui.com/dialog/,注意:未包含在FullCalendar jqueryui源文件中)上打开一个对话框。添加一个组合框/选择到这个对话框。使用ajax/json获取数据(http://api.jquery.com/jQuery.getJSON/)。

在对话框中添加一个按钮,并通过其功能添加事件(http://arshaw.com/fullcalendar/docs/event_data/addEventSource/)。

的操作选择有用的问题:

注源代码中包含一些例子。 fullcalendar-1.6.1/demos/selectable.html似乎对解决您的问题很有用。

我创建使用演示页:http://arshaw.com/fullcalendar/docs/usage/

calendar.html

<html> 
<head> 
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css"> 
<link rel='stylesheet' type='text/css' href='fullcalendar-1.6.1/fullcalendar/fullcalendar.css' /> 
</head> 
<body> 
<div id="dialog" title="Dialog Title"> 
<select id="titles"></select> 
</div> 

<div id='calendar'></div> 

<script type="text/javascript" src="http://code.jquery.com/jquery.js"></script> 
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> 
<script type="text/javascript" src="fullcalendar-1.6.1/fullcalendar/fullcalendar.min.js"></script> 
<script type="text/javascript"> 
//$(document).ready(function() { 

    // page is now ready, initialize the calendar... 


    $("#dialog").dialog({ autoOpen: false }); 

    $('#calendar').fullCalendar({ 
    dayClick: function(date, allDay, jsEvent, view) { 
     $('#titles').find('option').remove(); //remove old options 

     /* get the titles via json */ 

     $.getJSON('titles.php', function(data) { 

      $.each(data, function(key, val) { 

      //$("#titles").append(new Option(val.toString(),key)); 
      /* add the val as key to demo it*/ 
      $("#titles").append(new Option(val.toString(),val.toString())); 
      }); 

     }); 

     $("#dialog").dialog({buttons: { "Ok": function() 
     { 
       /* add the event to the Calendar */ 
       $('#calendar').fullCalendar('addEventSource', [{title: $("#titles").val(), start:date}]); 
       $(this).dialog("close"); 

     }}}); 
     $("#dialog").dialog("open"); 
    } 
}); 


//}); 
</script> 
</body> 
</html> 

titles.php

<?php 
    header('Content-type: application/json'); 
    $rows = array('Title one','Title two','Title three'); 
    echo json_encode((object)$rows); 
    exit; 
+0

谢谢你,它显示的记录从数据库中选择,但是如何在这里传递变量?: '('#calendar')。fullCalendar('addEventSource',[{title:$(“#titles”).val(),start:date}]);' 要通过查询添加到数据库? 我在你的帮助下学到了一些东西:) – Enato 2013-05-09 10:43:38

+0

你可以修改标题。php从数据库中获取数据 – 2013-05-09 15:30:58

+0

我已经从我的数据库中获取数据,但是如果我尝试获取带有ID和标题的json,如下所示: [ - { id:“1”, 标题:“团圆” }] 然后下拉出现带有“对象的对象”,但如果我把id列它显示正确的名称.. 我想要的标题的ID,因为我需要再补充一点,通过查询 – Enato 2013-05-09 17:15:20