1. Используй метод .off() для удаления предыдущих обработчиков событий перед добавлением нового.
2. Исправь код AJAX, чтобы ограничить количество перерисовок элементов.
$("#modal").off('submit').on('submit', function (e) {
e.preventDefault();
var form_data = $(this).serialize();
$.ajax({
type: "POST",
url: "user/add.php",
data: form_data,
success: function (html) {
document.getElementById("shadow").style.display = "none";
document.getElementById("modal").style.display = "none";
$('#modal').trigger('reset');
$("#main").append(html);
}
});
});
add.php:
require "../database/Task.php";
if (isset($_POST['title']) && isset($_POST['description'])) {
$task_mess = new Task;
$task_mess->add_task($_POST['title'], $_POST['description']);
$new_task = $task_mess->get_last_task();
echo "<div class='task'>
<h3>{$new_task['title']}</h3>
<p>{$new_task['description']}</p>
</div>";
}