验证有助于确保用户输入的数据准确无误,并防止保存不正确的值。例如,它可以防止在同一时间将两个任务分配给同一个人。
通常,可以通过使用 dhtmlxGantt API 的事件来拦截并检查输入数据的正确性来进行数据验证:
以下事件是进行数据验证时的关键且常用事件:
实现验证最简单的方法是使用 onLightboxSave 事件。当用户在表单中点击“保存”时,该事件会被触发。返回 true 允许保存更改,而返回 false 则会取消保存并保持弹窗处于打开状态。
例如,为了防止在没有分配用户的情况下保存任务,可以使用如下代码:
gantt.attachEvent("onLightboxSave", function(id, item){
if(!item.text){
gantt.message({type:"error", text:"Enter task description!"});
return false;
}
if(!item.user){
gantt.message({type:"error", text:"Choose a worker for this task!"});
return false;
}
return true;
});
Related sample: Validate lightbox values
上述方法的一个局限性是:如果通过内联编辑或拖拽任务进行更改,则不会触发该事件。
为了覆盖所有更改场景——包括编辑、创建和删除——可以使用 dataProcessor 对象,特别是其 onBeforeUpdate 事件。该事件会在数据发送到服务器之前、并且甘特图发生任何修改后触发,无论修改是如何产生的。
gantt.init("gantt_here");
gantt.load("data.php");
var dp = new gantt.dataProcessor("data.php");
dp.init(gantt);
dp.attachEvent("onBeforeUpdate", function (id, status, data) {
if (!data.text) {
gantt.message("The event's text can't be empty!");
return false;
}
return true;
});
参数说明如下:
请注意,如果某个字段未通过验证,更改将不会发送到服务器,而是保留在客户端,可以进一步处理。
Back to top