OnEventSave 在 dhtmlx 调度程序中多次触发
OnEventSave triggering multiple times in dhtmlx scheduler
您好,我开始使用 Dhtmlx 调度程序,它真的很棒。我正在检查空事件名称或已保存在调度程序对象中的事件名称。我根据此检查发出警报,这是第一次很好。当我关闭调度程序并尝试添加具有相同名称的事件时,警报会显示多次。在跟踪问题时,我注意到 "scheduler.attachEvent("onEventSave")" 被多次触发,因此多次显示警报。如何在保存单个事件时停止多次出现。
我的代码:
scheduler.attachEvent("onEventSave",function(id, ev, is_new){
var event_name_array = [];
var events_JSON_Array = JSON.parse(scheduler.toJSON());
for(var i = 0; i < events_JSON_Array.length; i++)
{
var event = events_JSON_Array[i];
event_name_array.push(scheduler.getEvent(event.id).text);
}
if (!ev.text || (event_name_array.indexOf(ev.text) > -1) && (event_name_array.length > 1)) {
alert('Bad input');
return false;
}
return true;
})
提前致谢!!!
您在函数中有拼写错误 - 忘记 ;
:
var event_name_array = []
alert('Bad input')
很可能此处理程序已附加多次。
尝试像下面这样添加检查
if(!scheduler._onEventSave){
scheduler._onEventSave = scheduler.attachEvent("onEventSave",function(id, ev, is_new){
var event_name_array = [];
var events_JSON_Array = JSON.parse(scheduler.toJSON());
for(var i = 0; i < events_JSON_Array.length; i++)
{
var event = events_JSON_Array[i];
event_name_array.push(scheduler.getEvent(event.id).text);
}
if (!ev.text || (event_name_array.indexOf(ev.text) > -1) && (event_name_array.length > 1)) {
alert('Bad input');
return false;
}
return true;
});
}
如果您有多个事件,您可能需要对所有事件进行相同的检查。在那种情况下,将所有 attachEvent 放在某个函数中并确保它只调用一次会更简单,例如
// define handlers here
scheduler.initAppEvents = function(){
scheduler.attachEvent("onEventSave",function(id, ev, is_new){
....
});
....
// replace self with an empty function after first call
scheduler.initAppEvents = function(){};
};
并调用初始化
scheduler.initAppEvents();
您好,我开始使用 Dhtmlx 调度程序,它真的很棒。我正在检查空事件名称或已保存在调度程序对象中的事件名称。我根据此检查发出警报,这是第一次很好。当我关闭调度程序并尝试添加具有相同名称的事件时,警报会显示多次。在跟踪问题时,我注意到 "scheduler.attachEvent("onEventSave")" 被多次触发,因此多次显示警报。如何在保存单个事件时停止多次出现。
我的代码:
scheduler.attachEvent("onEventSave",function(id, ev, is_new){
var event_name_array = [];
var events_JSON_Array = JSON.parse(scheduler.toJSON());
for(var i = 0; i < events_JSON_Array.length; i++)
{
var event = events_JSON_Array[i];
event_name_array.push(scheduler.getEvent(event.id).text);
}
if (!ev.text || (event_name_array.indexOf(ev.text) > -1) && (event_name_array.length > 1)) {
alert('Bad input');
return false;
}
return true;
})
提前致谢!!!
您在函数中有拼写错误 - 忘记 ;
:
var event_name_array = []
alert('Bad input')
很可能此处理程序已附加多次。 尝试像下面这样添加检查
if(!scheduler._onEventSave){
scheduler._onEventSave = scheduler.attachEvent("onEventSave",function(id, ev, is_new){
var event_name_array = [];
var events_JSON_Array = JSON.parse(scheduler.toJSON());
for(var i = 0; i < events_JSON_Array.length; i++)
{
var event = events_JSON_Array[i];
event_name_array.push(scheduler.getEvent(event.id).text);
}
if (!ev.text || (event_name_array.indexOf(ev.text) > -1) && (event_name_array.length > 1)) {
alert('Bad input');
return false;
}
return true;
});
}
如果您有多个事件,您可能需要对所有事件进行相同的检查。在那种情况下,将所有 attachEvent 放在某个函数中并确保它只调用一次会更简单,例如
// define handlers here
scheduler.initAppEvents = function(){
scheduler.attachEvent("onEventSave",function(id, ev, is_new){
....
});
....
// replace self with an empty function after first call
scheduler.initAppEvents = function(){};
};
并调用初始化
scheduler.initAppEvents();