在jquery中打开对话框而不是alert / prompt

时间:2014-03-04 07:50:25

标签: javascript jquery events dialog fullcalendar

我正在使用fullcalendar。我想在点击某个活动时显示一个对话框。但我只知道如何弹出警报或提示。如何使用JavaScript弹出对话框?

我的jQuery代码如下:

$(document).ready(function () {
    var date = new Date();
    var d = date.getDate();
    var m = date.getMonth();
    var y = date.getFullYear();

    var calendar = $('#calendar').fullCalendar({
        editable: true,
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },

        events: "../testcalendar/fullcalendar/events.php",

        // Convert the allDay from string to boolean
        eventRender: function (event, element, view) {
            if (event.allDay === 'true') {
                event.allDay = true;
            } else {
                event.allDay = false;
            }
        },
        selectable: true,
        selectHelper: true,
        select: function (start, end, allDay) {
            var title = prompt('Event Title:');
            if (title) {
                var start = $.fullCalendar.formatDate(start, "yyyy-MM-dd HH:mm:ss");
                var end = $.fullCalendar.formatDate(end, "yyyy-MM-dd HH:mm:ss");
                $.ajax({
                    url: '../testcalendar/fullcalendar/add_events.php',
                    data: 'title=' + title + '&start=' + start + '&end=' + end,
                    type: "POST",

                });
                calendar.fullCalendar('renderEvent', {
                    title: title,
                    start: start,
                    end: end,
                    allDay: allDay
                },
                true // make the event "stick"
                );
            }
            calendar.fullCalendar('unselect');
        },
        editable: true,
        eventDrop: function (event, delta) {
            var start = $.fullCalendar.formatDate(event.start, "yyyy-MM-dd HH:mm:ss");
            var end = $.fullCalendar.formatDate(event.end, "yyyy-MM-dd HH:mm:ss");
            $.ajax({
                url: '../testcalendar/fullcalendar/update_events.php',
                data: 'title=' + event.title + '&start=' + start + '&end=' + end + '&id=' + event.id,
                type: "POST",

            });
        },
        eventResize: function (event) {
            var start = $.fullCalendar.formatDate(event.start, "yyyy-MM-dd HH:mm:ss");
            var end = $.fullCalendar.formatDate(event.end, "yyyy-MM-dd HH:mm:ss");
            $.ajax({
                url: '../testcalendar/fullcalendar/update_events.php',
                data: 'title=' + event.title + '&start=' + start + '&end=' + end + '&id=' + event.id,
                type: "POST",

            });

        },
        eventClick: function (calEvent, jsEvent, view) {

            alert('Id afspraak: ' + calEvent.id + '\nTitel afspraak: ' + calEvent.title + '\nBeschrijving afspraak: ' + calEvent.description + '\nStarttijd: ' + calEvent.start + '\nEindtijd: ' + calEvent.end);

        },

        eventMouseover: function (event, domEvent) {
            var layer = '<div id="events-layer" class="fc-transparent" style="position:absolute; width:100%; height:100%; top:-1px; text-align:right; z-index:100"><a><img src="../testcalendar/editbt.png" title="edit" width="14" id="edbut' + event.id + '" border="0" style="padding-right:3px; padding-top:2px;" /></a><a><img src="../testcalendar/delete.png" title="delete" width="14" id="delbut' + event.id + '" border="0" style="padding-right:5px; padding-top:2px;" /></a></div>';
            $(this).append(layer);
            $("#delbut" + event.id).hide();
            $("#delbut" + event.id).fadeIn(300);
            $("#delbut" + event.id).click(function () {
                $.ajax({
                    url: '../testcalendar/fullcalendar/delete_events.php',
                    data: 'id=' + event.id,
                    type: "POST",
                });
                var nTime = 1 * 50;
                window.setTimeout("location.reload()", nTime);
            });
            $("#edbut" + event.id).hide();
            $("#edbut" + event.id).fadeIn(300);
            $("#edbut" + event.id).click(function () {
                var title = prompt('\n\nNew Event Title: ');

                if (title) {
                    $.ajax({
                        url: '../testcalendar/fullcalendar/update_title.php',
                        data: 'title=' + title + '&id=' + event.id,
                        type: "POST",
                    });
                    var nTime = 1 * 50;
                    window.setTimeout("location.reload()", nTime);
                }

            });
        },

        eventMouseout: function (calEvent, domEvent) {
            $("#events-layer").remove();
        },

    });

});

1 个答案:

答案 0 :(得分:3)

您可以在事件点击中使用Jquery对话框,如http://jsfiddle.net/SzDsR/1/

Html代码类似

<div id="dialog" title="My dialog" style="display:none">
<form>
    <fieldset>
        <label for="Id">Id</label>
        <input type="text" name="name" id="name" class="text ui-widget-content ui-corner-all">
        <label for="Id">Title</label>
        <input type="text" name="title" id="title" class="text ui-widget-content ui-corner-all">
    </fieldset>
</form>

和fullcalendar

 eventClick: function (calEvent, jsEvent, view) {

        $("#dialog").dialog({
            autoOpen: false,

        }

        );

        $("#name").val(calEvent.id);

        $("#title").val(calEvent.title);

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