ho capito l'errore , avevo un return true dopo il .each , mi aspettavo che se trovava il return false non avrebbe continuato , invece esce e esegue anche il return true fuori dal .each, allora ho modificato così :
codice:
function controlla_e_invia() {
//console.log('dentro controlla e invia');
var invia_form = true;
$(".class_descrizione").each(function(e) {
//return false;
console.log('dentro each');
var id_descrizione = $(this).attr("id");
var descrizione = $('#' + id_descrizione).val()
var id_to_get = id_descrizione.split('_');
//console.log('|' + id_to_get);
var quantita = $('#id_class_quantita_' + id_to_get[3]).val();
var um = $('#id_class_um_' + id_to_get[3]).val();
//console.log('um ' + um);
if (descrizione && (quantita == '' || um == '')) {
alert('Quando inserisci la descrizione devi anche inserire quantita e unità di misura alla riga ' + id_to_get[3]);
invia_form = false;
}
});
return invia_form;
}