@@ -168,71 +168,101 @@ function validateConti() {
168168 let valid = true;
169169 let errors = [];
170170
171- // Controlla ogni riga
172- $("input[name^= \'is_cespite \']").each(function() {
173- const id = $(this).attr("name").match(/\[(.*?)\]/)[1];
174- const is_cespite = $(this).val() == 1;
175-
176- let conto_selezionato = null;
177-
178- if (is_cespite) {
179- // Verifica conto cespite
180- const select_cespite = $("#select-conto-cespite-" + id).find("select");
181- conto_selezionato = select_cespite.val();
182-
183- if (!conto_selezionato || conto_selezionato == \'\') {
184- valid = false;
185- errors.push( \'Riga \' + id + \': selezionare un conto cespite \');
186- select_cespite.addClass( \'parsley-error \');
187- } else {
188- select_cespite.removeClass( \'parsley-error \');
189- }
190- } else {
191- // Verifica conto standard
192- const select_standard = $("#select-conto-standard-" + id).find("select");
193- conto_selezionato = select_standard.val();
194-
195- if (!conto_selezionato || conto_selezionato == \'\') {
196- valid = false;
197- errors.push( \'Riga \' + id + \': selezionare un conto \');
198- select_standard.addClass( \'parsley-error \');
171+ try {
172+ // Controlla ogni riga
173+ $("input[name^= \'is_cespite \']").each(function() {
174+ const id = $(this).attr("name").match(/\[(.*?)\]/)[1];
175+ const is_cespite = $(this).val() == 1;
176+
177+ let conto_selezionato = null;
178+
179+ if (is_cespite) {
180+ // Verifica conto cespite
181+ const select_cespite = $("#select-conto-cespite-" + id).find("select");
182+ if (select_cespite.length > 0) {
183+ conto_selezionato = select_cespite.val();
184+
185+ if (!conto_selezionato || conto_selezionato == \'\') {
186+ valid = false;
187+ errors.push( \'Riga \' + id + \': selezionare un conto cespite \');
188+ select_cespite.addClass( \'parsley-error \');
189+ } else {
190+ select_cespite.removeClass( \'parsley-error \');
191+ }
192+ }
199193 } else {
200- select_standard.removeClass( \'parsley-error \');
194+ // Verifica conto standard
195+ const select_standard = $("#select-conto-standard-" + id).find("select");
196+ if (select_standard.length > 0) {
197+ conto_selezionato = select_standard.val();
198+
199+ if (!conto_selezionato || conto_selezionato == \'\') {
200+ valid = false;
201+ errors.push( \'Riga \' + id + \': selezionare un conto \');
202+ select_standard.addClass( \'parsley-error \');
203+ } else {
204+ select_standard.removeClass( \'parsley-error \');
205+ }
206+ }
201207 }
202- }
203- });
204-
205- if (!valid) {
206- swal({
207- type: "error",
208- title: "<?php echo tr( \'Errori di validazione \'); ?>",
209- html: "<?php echo tr( \'Correggere i seguenti errori: \'); ?><br><ul><li>" + errors.join("</li><li>") + "</li></ul>"
210208 });
209+
210+ if (!valid && errors.length > 0) {
211+ swal({
212+ type: "error",
213+ title: "<?php echo tr( \'Errori di validazione \'); ?>",
214+ html: "<?php echo tr( \'Correggere i seguenti errori: \'); ?><br><ul><li>" + errors.join("</li><li>") + "</li></ul>"
215+ });
216+ }
217+ } catch (e) {
218+ console.error( \'Errore nella validazione dei conti: \', e);
219+ // In caso di errore, permetti il submit normale
220+ valid = true;
211221 }
212222
213223 return valid;
214224}
215225
216226// Gestione del reset del conto quando si cambia lo stato del cespite
217227$(document).ready(function() {
218- // Override del submit del form per aggiungere validazione personalizzata
219- $( \' form \' ).off( \' submit \' ).on ( \'submit \' , function(e) {
220- e.preventDefault();
228+ // Aggiungi validazione personalizzata solo se siamo nel plugin registrazioni
229+ if (window.location.href.indexOf ( \'id_plugin=<?php echo $id_plugin; ?> \' ) > -1 &&
230+ $( \' input[name="op"][value="change-conto"] \' ).length > 0) {
221231
222- // Prima validazione Parsley standard
223- if (!$(this).parsley().validate()) {
224- return false;
225- }
232+ console.log( \'Plugin registrazioni: attivazione validazione personalizzata \');
226233
227- // Poi validazione personalizzata per i conti
228- if (!validateConti()) {
229- return false;
230- }
234+ // Override del submit del form SOLO per il plugin registrazioni
235+ $( \'form[action=""] \').off( \'submit.registrazioni \').on( \'submit.registrazioni \', function(e) {
236+ console.log( \'Plugin registrazioni: validazione submit \');
231237
232- // Se tutto è valido, procedi con il submit
233- this.submit();
234- return true;
235- });
238+ // Prima validazione Parsley standard
239+ if (!$(this).parsley().validate()) {
240+ console.log( \'Plugin registrazioni: validazione Parsley fallita \');
241+ return false;
242+ }
243+
244+ // Poi validazione personalizzata per i conti
245+ if (!validateConti()) {
246+ console.log( \'Plugin registrazioni: validazione conti fallita \');
247+ return false;
248+ }
249+
250+ console.log( \'Plugin registrazioni: validazione completata, submit in corso \');
251+
252+ // Se tutto è valido, rimuovi il listener e procedi con il submit
253+ $(this).off( \'submit.registrazioni \');
254+
255+ // Previeni il loop infinito
256+ e.preventDefault();
257+ e.stopPropagation();
258+
259+ // Submit manuale
260+ this.submit();
261+ return false;
262+ });
263+ } else {
264+ console.log( \'Plugin registrazioni: validazione personalizzata non attivata \');
265+ }
236266
237267 $("input[name^= \'is_cespite \']").change(function() {
238268 const id = $(this).attr("name").match(/\[(.*?)\]/)[1];
0 commit comments