You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

102 lines
3.0 KiB

$(document).ready(function () {
// Fonction pour afficher les erreurs
const showError = (inputId, message) => {
$(`#${inputId}Error`).text(message).css('color', 'red');
};
// Fonction pour nettoyer les erreurs
const clearError = (inputId) => {
$(`#${inputId}Error`).text('');
};
// Regex pour validation
const regex = {
name: /^[A-Za-zÀ-ÖØ-öø-ÿ' -]+$/, // Lettres, espaces, apostrophes, traits
username: /^[A-Za-z0-9_]{4,20}$/, // Alphanumérique, underscore, 4-20 caractères
email: /^[^\s@]+@[^\s@]+\.[^\s@]+$/, // Email valide
};
// Validation par champ
const validateField = (fieldId, type, required = true) => {
const value = $(`#${fieldId}`).val().trim();
if (required && value === "") {
showError(fieldId, "Ce champ est obligatoire.");
return false;
}
if (type === "name" && !regex.name.test(value)) {
showError(fieldId, "Veuillez entrer un nom valide.");
return false;
}
if (type === "username" && !regex.username.test(value)) {
showError(fieldId, "Le nom d'utilisateur doit contenir 4 à 20 caractères alphanumériques ou '_'.");
return false;
}
if (type === "email" && !regex.email.test(value)) {
showError(fieldId, "Veuillez entrer un email valide.");
return false;
}
clearError(fieldId);
return true;
};
// Variables pour récupérer les données
let nom, prenom, username, email;
// Ajout d'écouteurs pour chaque champ
const fields = [
{ id: "nom", type: "name" },
{ id: "prenom", type: "name" },
{ id: "username", type: "username" },
{ id: "email", type: "email" },
];
fields.forEach(field => {
$(`#${field.id}`).on("change", function () {
validateField(field.id, field.type);
if (field.id === "nom") nom = $(this).val().trim();
if (field.id === "prenom") prenom = $(this).val().trim();
if (field.id === "username") username = $(this).val().trim();
if (field.id === "email") email = $(this).val().trim();
});
});
// Validation finale au moment de la soumission
$('#userForm').on("submit", function (event) {
event.preventDefault(); // Empêche la soumission par défaut
let isValid = true;
fields.forEach(field => {
if (!validateField(field.id, field.type)) {
isValid = false;
}
});
// Si le formulaire est valide, envoyer les données via AJAX
if (isValid) {
// Récupérer le token CSRF
const csrfToken = $('meta[name="csrf_token"]').attr('content');
$.ajax({
url: "save_user",
method: "POST",
data: {
'last_name': nom,
'first_name': prenom,
'username': username,
'email': email,
'csrf_token': csrfToken // Assurez-vous que le nom correspond au nom du token CSRF défini dans CodeIgniter
},
error: function (jqXHR, textStatus, errorThrown) {
console.log("Error: " + errorThrown);
// Gérer les erreurs (par exemple, afficher un message à l'utilisateur)
}
});
}
});
});