我有fullCalendar中由某些用户和不同客户端所进行的事件列表。我想按用户和客户端进行过滤,以便在单击一个用户时,只会显示其事件。在单击该用户时,我单击一个客户端,日历上仅显示该客户端和该用户的事件。
https://codepen.io/anon/pen/Owmqwe?page=1&
在我的示例中,当我单击Jack和Petco时,将仅显示Jack的Petco客户的事件 。 但是问题是,当我单击Jack然后单击Petco时,将显示所有petco事件。反之亦然,当我单击Petsmart,然后单击Jack时,也是如此。仅应显示Jack的petsmart事件时,才会显示Jacks Petco事件。
我认为问题出在JS的第96行,它与eventRender返回语句有关,我不确定如何解决,我阅读了JQUERY文档,但我仍然没有经验。
eventRender: function(event, element, view) {
return $('input[type=radio][name=user_selector]:checked').val() === 'all' && $('input[type=radio][name=type_selector]:checked').val() === 'all'
|| event.client.indexOf($("input[type=radio][name=type_selector]:checked").val()) >= 0
|| event.user.indexOf($("input[type=radio][name=user_selector]:checked").val()) >= 0;
另一件事:我可以通过事件源数组过滤用户。但是问题是:尽管我的示例是静态数组,但实际上我是从数据库动态获取事件。这意味着我将无法过滤具有新用户的事件,我将不得不不断手动更新代码。 因此,除非有我无法想到的解决方法,否则这对我不起作用。
答案 0 :(得分:1)
&&
和||
的使用不正确。我相信您想要这样的东西:
eventRender: function(event, element, view) {
return ($('input[type=radio][name=user_selector]:checked').val() === 'all' || event.user.indexOf($("input[type=radio][name=user_selector]:checked").val()) >= 0)
&& ($('input[type=radio][name=type_selector]:checked').val() === 'all' || event.client.indexOf($("input[type=radio][name=type_selector]:checked").val()) >= 0);
},