Валидация помогает обеспечить точность данных, вводимых пользователями, и предотвращает сохранение некорректных значений. Например, это может предотвратить назначение двух задач одному сотруднику в одно и то же время.
Обычно валидация данных выполняется с помощью событий из dhtmlxGantt API, которые позволяют перехватывать и проверять корректность вводимых данных:
Следующие события являются ключевыми и часто используются для валидации данных:
Самый простой способ реализовать валидацию — использовать событие onLightboxSave. Это событие возникает при нажатии пользователем кнопки 'Save' в форме. Возвращение true позволяет сохранить изменения, а false отменяет процесс и оставляет lightbox открытым.
Например, чтобы запретить сохранение задачи без назначенного пользователя, вы можете использовать следующий код:
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
Одно из ограничений описанного выше подхода заключается в том, что событие не срабатывает, если изменения вносятся через inline-редактирование или перетаскивание задач в Gantt.
Чтобы охватить все изменения — включая редактирование, создание и удаление — используйте объект dataProcessor, в частности его событие onBeforeUpdate. Это событие возникает перед отправкой данных на сервер и после любого изменения в Gantt, независимо от способа его внесения.
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;
});
Пояснения к параметрам:
Имейте в виду: если поле не проходит валидацию, изменения не отправляются на сервер, а остаются на стороне клиента, что позволяет обработать их дополнительно.
К началу