1

在我当前的项目中,我正在使用 jQuery 日历插件,你可以看到它的演示

http://www.web-delicious.com/jquery-plugins-demo/wdCalendar/sample.php

现在,问题是每当我尝试通过单击刷新按钮来刷新数据时,它都会给我重复的值。在这里,我给你刷新之前和刷新之后我的项目的截图,它可能对你有用。

刷新前

刷新后

在第二张图片中,您可以看到每个数据出现重复。每次我单击刷新按钮时,它都会出现重复数据,但在重新加载整个页面时,它会给我作为第一张图片。

我正在使用以下代码进行刷新。在刷新按钮单击事件

$("#showreflashbtn").click(function (e) {
    $("#gridcontainer").reload();
});

数据来自数据库,我认为问题是新数据来了,但是已经在浏览器中的数据没有清除,所以它变成了重叠。

4

4 回答 4

4

在添加新数据之前,您需要先清除日历数据。在重新加载之前尝试以下代码:

$("#gridcontainer").empty();

您可以在此处找到 wdCalendar 插件的文档:文档

于 2014-06-24T14:01:55.590 回答
3

为了防止重复事件,请执行以下操作:

在 jquery.calendar.js 文件中转到该populate()函数。在 ajax 成功函数中添加以下行:

option.eventItems = new Array();

这肯定会删除所有事件并防止重复。

完整代码:

$.ajax({
                type: option.method, 
                url: option.url,
                data: param,
                dataType: "json",
                dataFilter: function(data, type) {
                    return data;
                },
                success: function(data) {//function(datastr) {                                  
                    option.eventItems = new Array(); // Without this line there will be duplicates

                    if (data != null && data.error != null) {
                        if (option.onRequestDataError) {
                            option.onRequestDataError(1, data);
                        }
                    }
                    else {
                        // Good response
                        data["start"] = parseDate(data["start"]);
                        data["end"] = parseDate(data["end"]);
                        $.each(data.events, function(index, value) { 
                            value[2] = parseDate(value[2]);
                            value[3] = parseDate(value[3]); 
                        });
                        responseData(data, data.start, data.end);
                        pushER(data.start, data.end);
                    }
                    if (option.onAfterRequestData && $.isFunction(option.onAfterRequestData)) {
                        option.onAfterRequestData(1);
                    }
                    option.isloading = false;
                },
                error: function(data) { 
                    try {                           
                        if (option.onRequestDataError) {
                            option.onRequestDataError(1, data);
                        } else {
                            alert(i18n.xgcalendar.get_data_exception);
                        }
                        if (option.onAfterRequestData && $.isFunction(option.onAfterRequestData)) {
                            option.onAfterRequestData(1);
                        }
                        option.isloading = false;
                    } catch (e) { }
                }
            });

我希望它会帮助你

于 2015-03-23T10:45:31.693 回答
2

我遇到了与您在此处描述的相同的问题。我发现我的问题是我必须通过 StartTime 从数据库 order 中获取我的事件数据,这将有助于 wdcalendar javascript 代码正确清除事件。希望对你有帮助!

于 2013-09-12T18:48:20.380 回答
1
$("#showreflashbtn").click(function(e){
                $("#gridcontainer").empty();
                $("#gridcontainer").reload();
                $('.filterevents').removeClass('fcurrent');

            });

试试这个它对我有用

于 2014-06-25T05:01:07.117 回答