Здравствуйте!
У меня проблема с отображением сообщения об ошибке в модальном окне. Я не могу отобразить сообщение об ошибке, хотя программа находится в таком состоянии.
Я не знаю, куда поместить этот код:
чтобы дать пользователю время поместить сообщение об ошибке в модальное окно, если кто-то не заполнил поле «сводка», и перед нажатием кнопки редактирования.
Если у кого-то есть идеи, буду признателен.
С уважением,
Здравствуйте! У меня проблема с отображением сообщения об ошибке в модальном окне. Я не могу отобразить сообщение об ошибке, хотя программа находится в таком состоянии. Я не знаю, куда поместить этот код: [code]toogleModal('modificationModal') [/code] чтобы дать пользователю время поместить сообщение об ошибке в модальное окно, если кто-то не заполнил поле «сводка», и перед нажатием кнопки редактирования. Если у кого-то есть идеи, буду признателен. С уважением, [code]if (numEtat === true){ console.log('erreur champs synthèse'); $('#erreur').html('Champs manquants: champs synthèse'); return false; } [/code] А вот остальная часть кода, из которого взят этот код: [code]
//function rendre required "synthese" si changement en état terminé function change_c_etat(){ if ( document.getElementById("extendedProps-c_etat").value == '10' ) { document.getElementById("extendedProps-c_synthese").required = true; }else{ document.getElementById("extendedProps-c_synthese").required = false; } //alert(document.getElementById("extendedProps-c_synthese").required); } function change_m_etat(){ if ( document.getElementById("extendedProps-m_etat").value == '10' ) { document.getElementById("extendedProps-m_synthese").required = true; }else{ document.getElementById("extendedProps-m_synthese").required = false; } //alert(document.getElementById("extendedProps-m_synthese").required); }
//Active ou desactive la modal désigné en argument function toogleModal(modal) { console.log('toogleModal'); var bookingModal = $('#' + modal); // Recupération de la modal //console.log(bookingModal); bookingModal.modal('toggle'); // Apparition/disparition de la fenêtre modal bookingModal.on('shown.bs.modal', function() {
$('#erreur').empty(); })
};
function verifChampModal(modal) { console.log('verifChampModal'); // Vérifier si les champs requis sont remplis var test = $("#" + modal); // console.log(test);
//Récupère l'id de l'état de l'événement et teste si il vaut 10 pour mettre une synthèse numEtat = false; var testFindEtat = test.find('select[id="extendedProps-m_etat"]').filter(function() { console.log($(this).val()); if( $(this).val() == 10) { numEtat = true; //console.log('Champs manquants: champs synthèse'); } else{ numEtat = false; } });
nameChampsManquants = Object.values(champsManquants); //console.log(nameChampsManquants); var titleChampsManquants = nameChampsManquants[0].title; //console.log(titleChampsManquants);
// Afficher une erreur si des champs sont manquants if (champsManquants.length > 0) { //console.log('err champ manquant'); console.log(titleChampsManquants); ; $('#erreur').html('Champs manquants :' + titleChampsManquants); // Affichage d'un message d'erreur return false; // Arrêter l'exécution de la fonction } return true; }
//Preparations des données pour la transmission au calendrier var events = [ // Vos événements ici @foreach ($evenements as $evenement) { id: '{{ $evenement->id }}', title: '{{ $evenement->nomclient }}', start: '{{ $evenement->date_debut }}', end: '{{ $evenement->date_fin }}', allDay: {{ $evenement->jourComplet }}, borderColor : '{{ $evenement->couleurrdv }}', backgroundColor : '{{ $evenement->couleurrdv }}', display : '{{ $evenement->displayrdv }}', extendedProps: { description: '{{ str_replace(array("\r", "\n"), '\r',$evenement->description) }}', code_cli_pro: '{{ $evenement->code_client }}', user_id: '{{ $evenement->user_id }}', type_evenement: '{{ $evenement->type_evenement }}', etat: '{{ $evenement->etat }}', synthese: '{{ str_replace(array("\r", "\n"), '\r',$evenement->synthese) }}', nom_cli_pro: '{{ $evenement->objet }}' }, // Autres propriétés d'événement si nécessaire }, @endforeach ]; //console.log('evenement : '+events); var calendarEl = document.getElementById('calendrier'); // Récupère l'element dans lequel on va construire le calendrier // Définition des paramètre du calendrier var calendrier = new FullCalendar.Calendar(calendarEl, { events: events, // Source des évènement au chargement de celui ci handleWindowResize: true, aspectRatio: 2, firstDay:1, hiddenDays:[0], eventColor: 'red', eventBackgroundColor: 'indigo', eventBorderColor: 'indigo', eventTextColor: 'white', navLinks: true, navLinkDayClick: function(date, jsEvent) { send_mail(date.toLocaleString('fr-FR', { timeZone: 'Europe/Paris' })); }, locale: 'fr', //Définis le contenu du header du calendrier headerToolbar: { start: 'prevYear,prev dayGridMonth,timeGridWeek', /* multiMonthYear,timeGridDay */ center: 'title', end: 'today next,nextYear' }, // Changement du contenu textuel des boutons buttonText: { today: 'Aujourd\'hui', month: 'Mois', week: 'Semaine', day: 'Jour', list: 'Liste', multiMonthYear: 'Années', }, selectable: true, // Active la selection pour les evenement // selectMirror: false, displayEventTime: true, // Affiche l'heure sur les evenement
//Change le format de l'heure eventTimeFormat: { hour: 'numeric', minute: '2-digit', meridiem: false }, // Fonction qui se déclenche au clique sur un jour select: function(start, allDays) { console.log('click new'); //console.log('user_id : '+document.getElementById('select_utilisateur').value); user_id = document.getElementById('select_utilisateur').value; //console.log(user_id); //alert('clicknew'); var dataForm var typeChamp = ['title', 'extendedProps', 'heure_debut', 'heure_fin', 'end', 'allDay', 'start']; toogleModal('bookingModal'); // Fait apparaitre la modal videChampModal('bookingModal'); // Vide les champs de la modal a son apparition autocompleteHeure('c_heure_debut', 'c_heure_fin'); // Complète l'heure de fin a partir de l'heure de debut
$('#saveBtn').on('click', function() { console.log('save bouton cliqué'); recuperationDataForm('bookingModal', 'saveBtn', start, false, typeChamp) .then((retour) => { console.log('Résultat:', retour); // Utilisation du résultat en cas de réussite dataForm = retour; console.log('dataform : ', dataForm); $.ajax({ url: "{{ route('evenement-calendrier.store') }}", type: "POST", dataType: 'json', data: dataForm, success: function(response) { //Si la requête est un succès on stocke la réponse pour créer un nouvel évenement pout l'afficher ensuite // Ajout des evenements au calendrier //console.log('response : ', response);
//Changement de la couleur selon etat_id monetatid = response.extendedProps['etat_id']; console.log(monetatid);
switch (monetatid) { case 16 : macouleur = 'red'; break; case 17 : macouleur = 'orange'; break; case 20 : macouleur = 'green'; break; case 25 : macouleur = 'black'; break; default : macouleur = 'red'; break; } console.log(macouleur); ; //Changement affichage selon etat mondisplay = response.extendedProps['etat']; if (mondisplay == 10){ mondisplay = 'list-item'; }else{ mondisplay = 'block'; }
//REFRESH PAGE EN ATTENDANT DE CORRIGER LE BUG AUTOCOMPLETE // (qui ne fontionne pas après fermeture d'un modal) //location.reload(); }, error: function(error) {} }); }) .catch((error) => { console.error('Erreur:', error); // Gestion des erreurs }); //Requête Ajax pour envoyer l'evenement sur 'evenement.store'
}); // Attend que la fermeture de la modal soit complète $("#bookingModal").on("hidden.bs.modal", function() { $('#erreur').empty(); // Vide le message d'erreur }); //console.log('FIN ???'); },
eventClick: function(event) { var start = event.event.start; var dataForm var typeChamp = ['title', 'extendedProps', 'heure_debut', 'heure_fin', 'end', 'allDay', 'start']; toogleModal('modificationModal'); // Fait apparaitre la modal
//videChampModal('modificationModal'); // Vide les champs de la modal a son apparition autoCompleteEvent(event.event, typeChamp, 'modificationModal');
[/code] Я попытался переместить эту строку кода ниже, которая уже находится в «календарной» части: [code]toogleModal('modificationModal')
[/code] из этой строки: [code] $('#modifBtn').on('click', function() [/code] Но это ничего не изменило, поскольку сообщение об ошибке все равно не отображается. Cdt